【发布时间】:2022-01-25 13:42:05
【问题描述】:
我有一些看起来像这样的数据:
X1
A,B,C,D,E
A,B
A,B,C,D
A,B,C,D,E,F
我想生成一个包含每个向量的第一个元素(“A”)的列,以及另一个包含所有其余值的列(“B”、“C”等):
X1 Col1 Col2
A,B,C,D,E A B,C,D,E
A,B A B
A,B,C,D A B,C,D
A,B,C,D,E,F A B,C,D,E,F
我尝试了以下方法:
library(dplyr)
testdata <- data.frame(X1 = c("A,B,C,D,E",
"A,B",
"A,B,C,D",
"A,B,C,D,E,F")) %>%
mutate(Col1 = sapply(strsplit(X1, ","), "[", 1),
Col2 = sapply(strsplit(X1, ","), "[", -1))
但是,我似乎无法摆脱 Col2 中值周围的讨厌的向量括号。有什么办法吗?
【问题讨论】:
-
你的意思是你打算让
Col2成为一个字符串而不是一个列表列? -
或许
Col2 = sapply(strsplit(X1, ","), function(z) paste(z[-1], collapse=","))?