我的列的值如下所示。
v2 <- c("[0,1]", "[4,8]", "[10, 23]")
df <- data.frame(v2, stringsAsFactors = FALSE)
我如何提取第一个数字(下限)和第二个数字(上限)?并保存到Min和Max栏中?
谢谢!
-Shelly
答案 0 :(得分:3)
您可以使用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
或者您可以使用tidyr的extract
:
tidyr::extract(df, v2,c("Min","Max"),"(\\d+)\\s*,\\s*(\\d+)")
Min Max
1 0 1
2 4 8
3 10 23