【发布时间】:2013-04-12 15:35:06
【问题描述】:
我在一个列表中有多个文件,我想根据Year 列合并它们,以便我的新文件
看起来像Merged_file。如果我有 2 个文件,我可以使用 merge(file1, file2, by="Year"),但我不知道如何对列表中的多个文件执行此操作。
我也试过这个newlist <- lapply(files, function(t)do.call(rbind.fill, t)),但这不是我想要的。
file1 file2 Merged_file
Year Value1 Year Value2 Year Value1 Value2
2001 1 2000 0.5 2001 1 0.3
2001 2 2000 0.6 2001 2 0.3
2002 2 2001 0.3 2002 2 0.5
2002 3 2001 0.3 2002 3 0.6
2003 3 2002 0.5 2003 3 0.6
2003 4 2002 0.6 2003 4 0.6
2003 0.6
2003 0.6
【问题讨论】:
-
我使用了这个
merged.data.frame = Reduce(function(...) merge(..., all=T), list.of.data.frames),但它似乎不适用于具有不同行数的数据帧 -
仔细观察,您所说的“合并”似乎没有很好的定义。例如,结果中只有两行 2002。每个文件中每年是否总是只有两条记录?
-
不,这些是多行多列。另一方面,我有多个具有相同标题的 csv 文件我有另一组文件,我想与第一组文件合并。我为所有要合并的文件制作了一个列表。我需要像
list <- lapply(tables, function(t)do.call((smartbind), t))这样的东西,但我需要基于Year列进行合并。 -
你还没有真正澄清任何事情。我们需要的详细信息是关于您所谓的“合并”的特定机制。因为您的示例合并文件不符合任何合理的合并定义。请参阅下面 Brian 的回答,了解我认为您正在尝试做的事情。