在 R 中合并多个数据帧的有效方法

机器算法验证 r
2022-03-31 20:05:03

我正在通过将几个文件的内容合并在一起来构建一个大数据框。这些文件共享相同的列布局。

c = read.delim('bigfile1.txt')
c1 = read.delim('bigfile2.txt')
c2 = read.delim('bigfile3.txt')

ctmp1 = merge(c, c1, all=TRUE)
ctmp2 = merge(ctmp1, c2, all=TRUE)

上面的代码有效吗?

我是否应该重用相同的变量名,例如

tmp = merge(c, c1, all=TRUE)
tmp = merge(tmp, c2, all=TRUE)
4个回答

您可以按如下方式在 R 中对它们进行 cat 处理:

read.table(pipe("cat bigfile1.txt bigfile2.txt bigfile3.txt"))

既然您提到它们具有相同的列布局,您可能希望将三个(或更多)data.frames 附加到彼此下方,对吗?

在这种情况下,您可以查看rbind

cres = rbind(c, c1, c2)

但请注意:对于很多 data.frames,我注意到性能低于标准(这与 data.frames 在内存中管理的方式有关,作为列列表)。此外,因素可能存在问题:具有相同的列布局,但持有不同级别的因素可能会破坏这一点(没有尝试过)。

从 plyr 包中查看 rbind.fill。我最近看到哈德利的评论说它很有效但找不到。

如果高效是指“快速”,请查看 data.table 包。它的合并速度非常快。