【发布时间】:2016-03-16 07:57:03
【问题描述】:
我想找到最好的“R 方式”来展平如下所示的数据框:
CAT COUNT TREAT
A 1,2,3 Treat-a, Treat-b
B 4,5 Treat-c,Treat-d,Treat-e
所以它的结构是这样的:
CAT COUNT1 COUNT2 COUNT3 TREAT1 TREAT2 TREAT3
A 1 2 3 Treat-a Treat-b NA
B 4 5 NA Treat-c Treat-d Treat-e
生成源数据框的示例代码:
df<-data.frame(CAT=c("A","B"))
df$COUNT <-list(1:3,4:5)
df$TREAT <-list(paste("Treat-", letters[1:2],sep=""),paste("Treat-", letters[3:5],sep=""))
我相信我需要 rbind 和 unlist 的组合?任何帮助将不胜感激。 - 蒂姆
【问题讨论】:
-
您的“真实”数据有多大(性能是个问题吗?)
-
cSplit() 来自 splitstackshape 包将是一个不错的选择。
-
以你的例子
df[2:3]<-lapply(df[,2:3], function(x) do.call(rbind,lapply(x,"[",1:3)))似乎是一个不错的开始。 -
非常小的数据集,所以性能不是问题 - 谢谢!
-
@jazzurro,你看错函数了……
标签: r