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"