我有这样的数据框:
第一列是数字,第二列是逗号分隔列表(字符)
id numbers
1 2,4,5
2 1,4,6
3 NA
4 NA
5 5,1,2
我想在本质上"融化"数据框类似于重塑包。这样输出就是一个看起来像这样的数据框
id numbers
1 2
1 4
1 5
2 1
2 4
2 6
3 NA
4 NA
5 5
5 1
5 2
除了在reshape2包中,每个数字都必须在一列中......如果有很多数字,这会占用太多的存储空间...这就是为什么我选择将数字列表设置为逗号分隔列表。但融化不再适用于此设置。
您能否推荐最有效的方法来实现从输入数据帧到输出数据帧的转换?
答案 0 :(得分:-2)
我会为每一行执行此操作,创建一个data.frame并将它们存储在一个列表中,其中df是您的初始data.frame。
l = list()
for (j in 1:nrow(df)){
l[[j]] = data.frame(id = df$id[[j]],
numbers = split(df$numbers[[j]], ','))
}
之后,您可以使用plyr :: ldply将所有列表元素堆叠到单个data.frame中,并使用' data.frame'选项。