【发布时间】:2015-12-04 11:53:22
【问题描述】:
我有一个大表(约 100M 行和 28 列),格式如下:
ID A B C
1 2 0 1
2 0 1 0
3 0 1 2
4 1 0 0
除了 ID(唯一)之外的列给出了每种类型(即 A、B、C)的计数。我想将其转换为以下长格式。
ID Type
1 A
1 A
1 C
2 B
3 B
3 C
3 C
4 A
考虑到我的数据集的大小,我还想使用数据表(而不是数据框)。我检查了R 中的reshape2 包关于在长格式和短格式之间转换的问题,但是我不清楚melt 函数是否允许我以上述短格式进行计数。
关于如何在R 中使用reshape2 和/或data.table 快速有效地转换它有什么建议吗?
【问题讨论】:
-
@Arun 小插图似乎没有表中存在频率的示例。
-
@KTY,您尝试过我在回答中分享的解决方案吗?
-
@AnandaMahto 感谢您的回复。我按照您的建议使用了
melt,因为它使用数据表更快。对于第二步,我没有使用expandRows,而是将具有多个计数的行分开,然后replicatedID 和类型仅按计数排列,然后merged将其与原始表分开。似乎工作得很快。
标签: r data.table reshape reshape2