alignment具有不同时间间隔或数据间隙的多个数据集

我有很多年的csv文件中的几组数据。 其中一些数据很好地重叠,而另一些则没有数据或“差距”,有些则在数据点之间有不同的时间间隔,而且大多数数据收集的年份范围不同。 有没有一种相对简单的方法来组织这些不同的数据集,无论是在R或在Excel中,以匹配所有的数据与年alignment? 我宁愿不用大量的数据手动来做这​​件事,我相信一定有办法合理地做到这一点。

目前每组数据都是自己的csv文件。 将它们组合成一个Excel可能是最简单的,但正如我所说,如果可能的话,我宁愿不要手动去做。 简单地复制粘贴它们的年代也会不一致,所以我需要一些方法来考虑年份的价值。

任何帮助,将不胜感激。

使用plyr

 library(plyr) d1 <- data.frame(year=1980:2010, a = rep(1,31)) d2 <- data.frame(year=1990:2010, b = rep(1,21)) d3 <- data.frame(year=c(1980:1990, 2000:2010), c = rep(1,22)) join_all(list(d1, d2, d3)) 

或者如果你想使用dplyr

 library(tidyverse) d1 %>% left_join(d2) %>% left_join(d3) 

此方法仅使用Excel in-cell公式。 如果所有的数据都可以在一个电子表格中pipe理(不是太多的CSV文件,每个文件没有太多的行),那么我build议

  1. 将每个csv加载到单个电子表格的单独标签中,例如CSV1,CSV2,CSV3等
  2. 在另一个选项卡中,比如ALIGN,在列A中列出了每年的列表,跨所有文件的年数范围,没有差距
  3. 在ALIGN中的B列使用= IFNA(MATCH($ A12,'CSV1'!$ A:$ A,0),“”)来查找列A中的年份与ALIGN年相匹配的CSV1行(ALIGN行的示例12)
  4. Col C在CSV2中也是这样做的
  5. 现在,您可以在每个CSV,CSV2等CSV列中的每一列中都有列表B,C,D等列表
  6. 在另一个选项卡中,比如OUTPUT,使用公式如= IFERROR(INDEX('CSV1'!C:C,'ALIGN'!$ B132),“”)从CSV1的col C获得相应的数据(同样是OUTPUT行的例子32)。

在OUTPUT选项卡中,您可以在alignment的输出中构build所有需要的CSV文件中的所有列。