我有一个数据框列,需要将其分为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个子字符串:从开头到:,从:-,从-到结尾。每个匹配的子字符串将在结果对象中构成一个单独的列。

07-24 09:52
查看更多