R 仅从字符串中提取小数点之间的值

R 仅从字符串中提取小数点之间的值,r,string,R,String,我有一个带有字符串的数据帧,例如: id <- c(1,2) x <- c("...14.....5.......................395.00.........................14.........1..", "......114.99....................124.99................") df <- data.frame(id,x) df$x <- as.character(df$x) 分隔值的周

我有一个带有字符串的数据帧,例如:

id <- c(1,2)
x <- c("...14.....5.......................395.00.........................14.........1..",
   "......114.99....................124.99................")
df <- data.frame(id,x)
df$x <- as.character(df$x)
分隔值的周期数是随机的

library(stringr)
df$x2 = str_extract_all(df$x, "[0-9]+\\.[0-9]+")

df[c(1, 3)]
#   id             x2
# 1  1         395.00
# 2  2 114.99, 124.99
说明:
[0-9]+
匹配一个或多个数字,
\\.
匹配一个小数点<代码>str_extract_all提取所有匹配项

新列是
列表
列,而不是插入逗号的字符串。这允许您访问各个元素(如果需要):

df$x2[2]
# [[1]]
# [1] "114.99" "124.99"
如果希望将字符向量作为列,请执行以下操作:

df$x3 = sapply(str_extract_all(df$x, "[0-9]+\\.[0-9]+"), paste, collapse = ",")

df$x3[2]
#[1] "114.99,124.99"
df$x3 = sapply(str_extract_all(df$x, "[0-9]+\\.[0-9]+"), paste, collapse = ",")

df$x3[2]
#[1] "114.99,124.99"