我有一個包含單詞、空格和數字(整數和小數)的字串。我想將它們分成資料框中的兩列,以便列A包含文本,列B包含數字。這似乎是一項超級簡單的任務,但我不知道如何捕獲文本。不過我確實捕捉到了這些數字。
require(tidyr)
df <- data.frame(x = c("This is text0", "This is a bit more text 0.01", "Even more text12.231"))
捕獲了列中的數字,B但我無法弄清楚如何將正則運算式放入第一組括號中以獲取文本A:
df |>
extract(x, c("A", "B"), "()(\\d \\.*\\d*)")
# A B
#1 0
#2 0.01
#3 12.231
uj5u.com熱心網友回復:
我們捕獲一個或多個字母/空格 ( ([A-Za-z ] )) 后跟任何空格和帶有 的數字。( [0-9.] )
library(tidyr)
extract(df, x, into = c("A", "B"), "([A-Za-z ] )\\s*([0-9.] )", convert = TRUE)
A B
1 This is text 0.000
2 This is a bit more text 0.010
3 Even more text 12.231
uj5u.com熱心網友回復:
您可以使用
extract(x, c("A", "B"), "^(.*?)\\s*(\\d (?:\\.\\d )?)$")
請參閱正則運算式演示
詳情:
^- 字串的開始(.*?)- 第 1 組:除換行字符外的任何零個或多個字符盡可能少\s*- 零個或多個空格(\d (?:\.\d )?)- 第 2 組:一個或多個數字,然后是一個可選序列.和一個或多個數字$- 字串結束
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/533745.html
標籤:r正则表达式
上一篇:在R中使用正則運算式識別模式
