【发布时间】:2017-06-28 09:27:05
【问题描述】:
我需要根据 ID 将多个文件合并到一个数据框中。最终数据框采用地图形式,ID 如下:
+-------+-----+-------------+-------------+---------------+
| Name | ID | CategoryID1 | CategoryID2 | CategoryID400 |
+-------+-----+-------------+-------------+---------------+
| name1 | ID1 | 0 | 1 | 0 |
| name2 | ID2 | 1 | 1 | 0 |
| name3 | ID3 | 0 | 0 | 0 |
| name4 | ID4 | 1 | 0 | 1 |
+-------+-----+-------------+-------------+---------------+
那些是二进制变量(类别),无论发生多少次,我都需要分配 1。我有带有列名的空数据框(地图),需要用从多个文件合并的数据填充它。
要合并并填充到一个文件中的数据文件如下所示。可以有回复,因此 2 个文件中的相同 ID 可能已分配了两个类别,但这并不重要,重要的是它出现并且 1 将分配给主数据框。
+-------+-----+---------------------------------------------------------------+
| name1 | ID1 | CategoryID1 CategoryID4 |
| name2 | ID2 | CategoryID1 CategoryID2 CategoryID9 |
| name3 | ID4 | CategoryID150 CategoryID200 CategoryID400 |
| name4 | ID4 | CategoryID1 CategoryID4 CategoryID7 CategoryID15 CategoryID89 |
+-------+-----+---------------------------------------------------------------+
创建一个空的数据框没有问题,只是想知道如何循环文件。重要的是原始文件被 \t 分隔为 3 列,但类别由空格分隔。
【问题讨论】:
-
一步一步来: 1. 将所有文件读入单个数据框 -
df1 <- rbindlist(lapply(list.files(), fread ....)))2. 将选项卡和堆栈上的类别列分开。 3.然后获取唯一行,并将长格式转换为宽格式。
标签: r merge data-manipulation