在r中连接字符串的数据透视表

MFR*_*MFR 2 r

我有以下数据集:

mydata<- data.frame(Factors= c("a,b" , "c,d" , "a,c"), Valu = c ("2,3" , "7,8" , "9,1"))



   Factors Valu
1     a,b  2,3
2     c,d  7,8
3     a,c  9,1
Run Code Online (Sandbox Code Playgroud)

我希望转换为具有以下因素的所有值的以下内容:

我理想的输出

a   b  c  d
2   2  7  7
3   3  8  8
9      9
1      1
Run Code Online (Sandbox Code Playgroud)

我需要一个数据透视表.但是我需要准备数据然后使用meltdcast获得我想要的输出:准备数据的失败尝试之一是:

mydata2 <- cSplit(mydata, c("Factors","Valu") , ",", "long")
Run Code Online (Sandbox Code Playgroud)

但他们失去了联系.

akr*_*run 6

这是一个单行代码 cSplit

library(splitstackshape)
with(cSplit(cSplit(mydata, 1, ",", "long"), 2, ",", "long"), split(Valu, Factors))
#$a
#[1] 2 3 9 1

#$b
#[1] 2 3

#$c
#[1] 7 8 9 1

#$d
#[1] 7 8
Run Code Online (Sandbox Code Playgroud)

如果我们需要a data.table/data.frame,请使用dcast将'long'格式转换为'wide'.

dcast(cSplit(cSplit(mydata, 1, ",", "long"), 2, ",", "long"), 
           rowid(Factors)~Factors, value.var="Valu")[, Factors := NULL][]
#   a  b c  d
#1: 2  2 7  7
#2: 3  3 8  8
#3: 9 NA 9 NA
#4: 1 NA 1 NA
Run Code Online (Sandbox Code Playgroud)

注意:splitstackshape加载data.table.在这里,我们使用了data.table_1.10.0.在dcastdata.table也非常