我有一列数据,我想用逗号分隔(我对此部分没有任何问题)。我遇到的问题是我希望它被分成数据框中的新列,并且原始列本身具有由逗号分隔的不同数量的值。例如:
第1栏
Column1
1 AAA, BBB, CCC
2 AA232B
3 A, B, C, DDD
4 52 AJD 23
鉴于这组数据,我将有四列:
Col1 Col2 Col3 Col4
1 AAA BBB CCC
2 AA232B
3 A B C D
4 52 ADJ 23
谢谢!
答案 0 :(得分:0)
希望以下查询有效,其中a,b,c,d指的是列名。您可以根据自己的意愿替换NA。
df<-data.table(x=c("AAA, BBB, CCC","AA232B","A, B, C, DDD","52 AJD 23"))
df %>% separate(x, c("a","b","c","d"), extra = "merge", fill = "left")
a b c d 1 AAA BBB CCC <NA> 2 AA232B <NA> <NA> <NA> 3 A B C DDD 4 52 AJD 23 <NA>
答案 1 :(得分:0)
仅供比较,一种只有基本功能的方式,又称tidyr
test <- apply(df, 1, function(i) {unlist( strsplit( i, split = ",") )})
test <- lapply(test, function(i) {c( i, rep( NA, 4-length(i)) )})
test <- data.frame(matrix(unlist(test), ncol = 4, byrow = T))
答案 2 :(得分:0)
以下是使用cSplit
library(splistackshape)
cSplit(df, "x", ",")
# x_1 x_2 x_3 x_4
#1: AAA BBB CCC NA
#2: AA232B NA NA NA
#3: A B C DDD
#4: 52 AJD 23 NA NA NA
df <- data.frame(x=c("AAA, BBB, CCC","AA232B","A, B, C, DDD","52 AJD 23"))
答案 3 :(得分:0)
使用SAVEPOINT
库。
tidyr