我有一个数据框列,需要将其分为3个单独的列。看起来像这样:
I:500-600
I:700-900
II:200-250
我想将其分为以下3列:
V1 V2 V3
I 500 600
I 700 900
II 200 250
事实证明,这比我希望的要复杂一些。任何帮助,将不胜感激。
最佳答案
str_match
包中的stringr
的另一种解决方案:
x <- c("I:500-600", "I:700-900", "II:200-250")
library(stringr)
as.data.frame(str_match(x, "^(.*):(.*)-(.*)$")[,-1])
## V1 V2 V3
## 1 I 500 600
## 2 I 700 900
## 3 II 200 250
在上面的正则表达式中,我们匹配3个子字符串:从开头到
:
,从:
到-
,从-
到结尾。每个匹配的子字符串将在结果对象中构成一个单独的列。