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

时间:2017-10-12 17:09:02

标签: r excel statistics

我在各种年份的csv文件中有几组数据。一些数据很好地重叠,但其他数据有多年没有数据或“间隙”,有些数据点之间有不同的时间间隔,并且大多数数据具有收集数据的不同年份范围。是否有一种相对简单的方法来组织这些不同的数据集,无论是在R还是在Excel中,以匹配所有数据与年份对齐?我宁愿不使用大量数据手动执行此操作,我确信必须有一种方法可以合理地执行此操作。

目前,每组数据都是自己的csv文件。将它们组合成一个Excel可能是最简单的,但正如我所说,如果可能的话,我宁愿不用手工做。简单地复制粘贴它会使这些年也没有正确对齐,所以我需要一些方法让它考虑到年份的价值。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

使用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)

答案 1 :(得分:0)

此方法仅使用Excel单元格公式。如果所有数据都可在单个电子表格中管理(不是太多CSV文件,每个文件没有太多行),那么我建议

  1. 您将每个csv加载到单个电子表格的单独选项卡中,例如CSV1,CSV2,CSV3等。
  2. 在另一个标签中,例如ALIGN,在col A中列出每年的列表,跨越所有文件的年份范围,没有间隙
  3. 在ALIGN的Col B中使用= IFNA(MATCH($ A12,&#39; CSV1&#39;!$ A:$ A,0),&#34;&#34;)以查找CSV1行Col A中的年份与ALIGN年份匹配(ALIGN第12行的示例)
  4. 在Col C中对CSV2等执行相同的操作
  5. 现在,您在列B,C,D等列中都有列表,每个CSV选项卡CSV1,CSV2等中的哪些行匹配哪个日期
  6. 在另一个标签中,例如OUTPUT,使用公式如= IFERROR(INDEX(&#39; CSV1&#39;!C:C,&#39; ALIGN&#39;!$ B132),&#34;&# 34;)从CSV1的col C获取相应的数据(再次输出OUTPUT第32行的例子)。
  7. 在OUTPUT选项卡中,您可以构建对齐输出中所需的所有CSV文件中的所有列。