首页 > 解决方案 > 使用 R 提取列中的值

问题描述

我有一列具有如下所示的值。

v2 <- c("[0,1]", "[4,8]", "[10, 23]")
df <- data.frame(v2, stringsAsFactors = FALSE)

如何提取第一个数字(下限)和第二个数字(上限)?并保存到最小和最大列?

谢谢!

-雪莉

标签: rregex

解决方案


您可以strcapture用来捕获值,并确保数据框接受numeric values

strcapture("(\\d+)\\s*,\\s*(\\d+)",v2,data.frame(Min=numeric(),Max=numeric()))
  Min Max
1   0   1
2   4   8
3  10  23

或者你可以做

read.csv(text=gsub("\\[|\\]","",v2),h=F,col.names = c("Min","Max"))
  Min Max
1   0   1
2   4   8
3  10  23

或者您可以extract从 tidyr 使用:

tidyr::extract(df, v2,c("Min","Max"),"(\\d+)\\s*,\\s*(\\d+)")
  Min Max
1   0   1
2   4   8
3  10  23

推荐阅读