我有一个这样的数据框:
V1 V2 V3
a b X:12..500(1)
c d Y:34..1000(-1)
我想将最后一列拆分为不同的列
V1 V2 V3 V4 V5 V6
a b X 12 500 1
c d Y 34 1000 -1
我试图在“stringr”包中使用“str_split”,但似乎无法识别“..”
test <-data.frame(str_split_fixed(df$V3,":",2))
我相信还有很多其他方法可以做到。谢谢
答案 0 :(得分:1)
我们可以使用separate
tidyr
library(tidyr)
separate(transform(df1, V3 = gsub("[:.()]+", ",", V3)), V3,
into = paste0("V", 3:6), sep=",")
# V1 V2 V3 V4 V5 V6
#1 a b X 12 500 1
#2 c d Y 34 1000 -1
或者不使用任何包
cbind(df1[-3], read.table(text= sub(",$", "",
gsub("[:.()]+", ",", df1$V3)), sep=",", col.names = paste0("V", 3:6)))
答案 1 :(得分:1)
@akrun提供了一个很好的解决方案
我只会添加str_split
或strsplit
无法识别&#34; ...&#34;的原因,这是因为句号。 R中的元字符具有特殊含义:句点。匹配任何单个字符。
要与strsplit一起使用,您可以使用:
a="X:12..500(1)"
strsplit(a, split="\\..")
strsplit(a, split="..", fixed=TRUE)
strsplit(a, split="[.].")