【发布时间】:2017-12-13 18:53:30
【问题描述】:
我尝试搜索并发现了类似的问题,但不是同一个问题。这似乎应该有点普遍,所以我可能只是想念它。
我正在使用 read.table 读取多个 CSV 文件。我想将这些合并在一起,使具有相同 ID 列的行 cbind() 在一起,其余的留空。下面的例子可能更好地说明了
文件 1
UserID val1 val2
1 2
2 1 3
文件 2
UserID col1
1 a
3 z
文件 3
UserID feat1 feat2
1 Hi Hello
3 Moshi Moshi
想要的结果
UserID val1 val2 col1 feat1 feat2
1 2 a Hi Hello
2 1 3
3 z Moshi Moshi
我不希望它为缺失值添加零。如果可能的话,我不希望它用 NA 填充任何东西。
我只想在 UserID 列上合并数据集(在所有情况下为 3+,平均为 10),保持其他所有内容相同。
我确定有一个工具可以解决这个问题,我只是找不到它。
【问题讨论】:
-
你可以使用reduce:
df = Reduce(function(...) merge(..., all = T), list(file_1, file_2, file_3))作为填充值合并,我能想到的最简单的方法是:df[is.na(df)] = ''这假设所有NA值在数据集中被视为相同.否则,您必须在每个数据帧中编写不同的NAs 代码,以免丢失信息。 -
执行此操作的正确方法将导致
NA处于不匹配的位置。这是放置在那里的正确值。如果你想要别的东西,你需要第二步来替换它们。但是,如果您混合使用字符/数字列,则要求将它们全部替换为相同的值有点荒谬。所以你最好坚持NA。
标签: r dataframe import-from-csv