做类似融入R数据帧的事情

时间:2016-09-26 10:18:51

标签: r dataframe

我有这样的数据框:

第一列是数字,第二列是逗号分隔列表(字符)

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包中,每个数字都必须在一列中......如果有很多数字,这会占用太多的存储空间...这就是为什么我选择将数字列表设置为逗号分隔列表。但融化不再适用于此设置。

您能否推荐最有效的方法来实现从输入数据帧到输出数据帧的转换?

1 个答案:

答案 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'选项。