【发布时间】:2014-01-07 02:23:00
【问题描述】:
我有一个包含近 2,000 个 .csv 文件的目录。
每个文件具有以下结构(显示 500 行中的 4 行):
Date;QOF
1 2004-01-04 - 2004-01-10;9
2 2004-01-11 - 2004-01-17;11
3 2004-01-18 - 2004-01-24;13
4 2004-01-25 - 2004-01-31;13
“QOF”列也是 .csv 文件的名称,每个文件都有一个唯一的名称(例如“MSTF”、“XQS”等)。我希望将每个 .csv 文件中的这一列合并到到正在读取的第一个 .csv 文件,该文件还包含日期变量。换句话说,我想保留第一个文件中的所有列,只将所有其他 .csv 文件中的第二列合并到这个文件中。最终结果应该是这样的:
Date;QOF;MSTF;XQS
1 2004-01-04 - 2004-01-10;9;10;8
2 2004-01-11 - 2004-01-17;11;11;5
3 2004-01-18 - 2004-01-24;13;31;2
4 2004-01-25 - 2004-01-31;13;45;23
到目前为止,我已经尝试过:
filenames <- list.files()
do.call("cbind", lapply(filenames, read.csv, header = TRUE))
【问题讨论】:
-
使用合并而不是 cbind。确保传入适当的参数。
-
@iShouldUseAName :您将如何在这里使用合并? “确保传递适当的参数”是什么意思?
-
如果第一列
Date在所有文件中都完全相同,那么我认为cbind是一个很好的方法。试试do.call(cbind, lapply(filenames, read.table, header = TRUE, row.names = 1, sep = ';')) -
@flodel :谢谢,效果很好!假设目录中有一个文件,其中
Date列的行数较少 - 我如何修改程序以不包含该文件? -
选择不同的数据结构。