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

R 对齐具有不同时间间隔或数据间隔的多个数据集,r,excel,statistics,R,Excel,Statistics,我有几组不同年份的csv文件中的数据。有些数据重叠得很好,但有些数据没有年份,或“空白”,有些数据点之间有不同的时间间隔,大多数数据收集的年份范围不同。是否有一种相对简单的方法来组织这些不同的数据集,无论是在R还是在Excel中,以便将所有数据与年份匹配?我不希望使用大量数据手动执行此操作,我相信一定有一种方法可以合理地执行此操作 目前,每组数据都是自己的csv文件。将它们合并到一个Excel中可能是最简单的,但正如我所说的,如果可能的话,我宁愿不手工操作。简单地复制粘贴它也会使年份不正确对齐,

我有几组不同年份的csv文件中的数据。有些数据重叠得很好,但有些数据没有年份,或“空白”,有些数据点之间有不同的时间间隔,大多数数据收集的年份范围不同。是否有一种相对简单的方法来组织这些不同的数据集,无论是在R还是在Excel中,以便将所有数据与年份匹配?我不希望使用大量数据手动执行此操作,我相信一定有一种方法可以合理地执行此操作

目前,每组数据都是自己的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))
library(tidyverse)

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

使用
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))
library(tidyverse)

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

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

  • 您可以将每个csv加载到单个电子表格的单独选项卡中,例如CSV1、CSV2、CSV3等
  • 在另一个选项卡中,比如ALIGN,在col a中列出所有文件中的每一年,跨越年份范围,没有间隔
  • 在ALIGN的B列中,使用=IFNA(匹配($A12,'CSV1'!$A:$A,0),“”)查找A列中年份与ALIGN年份匹配的CSV1行(例如ALIGN行12)
  • 在C列中,对CSV2等执行相同的操作
  • 现在,在每个列B、C、D等中都有列表,每个CSV选项卡CSV1、CSV2等中的哪些行与哪个日期匹配
  • 在另一个选项卡中,比如OUTPUT,使用=IFERROR(INDEX('CSV1'!C:C,'ALIGN'!$B132),“”)等公式从CSV1的C列获取相应的数据(同样是输出行32的示例)

  • 在“输出”选项卡中,您可以从对齐输出中所需的所有CSV文件中构建所有列。

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

  • 您可以将每个csv加载到单个电子表格的单独选项卡中,例如CSV1、CSV2、CSV3等
  • 在另一个选项卡中,比如ALIGN,在col a中列出所有文件中的每一年,跨越年份范围,没有间隔
  • 在ALIGN的B列中,使用=IFNA(匹配($A12,'CSV1'!$A:$A,0),“”)查找A列中年份与ALIGN年份匹配的CSV1行(例如ALIGN行12)
  • 在C列中,对CSV2等执行相同的操作
  • 现在,在每个列B、C、D等中都有列表,每个CSV选项卡CSV1、CSV2等中的哪些行与哪个日期匹配
  • 在另一个选项卡中,比如OUTPUT,使用=IFERROR(INDEX('CSV1'!C:C,'ALIGN'!$B132),“”)等公式从CSV1的C列获取相应的数据(同样是输出行32的示例)

  • 在“输出”选项卡中,您可以根据对齐输出中所需的所有CSV文件构建所有列。

    您希望“对齐”数据采用何种形式?每个数据集中有多少列?年是与月/日分开记录的还是在一个日期列中记录的?一组简单的列,可能在csv文件或Excel文档中。第一列显示年份,后续列显示与年份相关的数据条目,这似乎是我的数据最有条理的方式。每个数据集有两列,一列显示年份,另一列显示数据条目本身。月和日不包括在内。那么,每个csv文件中是否每年有一行有间隙?很多年了?我为不清楚道歉。也许举个例子会很有帮助。所以对于一个假设的两个数据集:数据集1:Year:Entry:1980 15 1985 24 1990 22数据集2:Year:Entry:1980 15 1981 11 1982 12 1983 9等等,结果有点混乱,抱歉。我猜评论不允许格式化。对于具有年度数据的数据集,存在年度行。每5年只有一个数据点的数据集每5年只有一行。因此,只有一行数据点实际可用。您希望“对齐”数据采用什么形式?每个数据集中有多少列?年是与月/日分开记录的还是在一个日期列中记录的?一组简单的列,可能在csv文件或Excel文档中。第一列显示年份,后续列显示与年份相关的数据条目,这似乎是我的数据最有条理的方式。每个数据集有两列,一列显示年份,另一列显示数据条目本身。月和日不包括在内。那么,每个csv文件中是否每年有一行有间隙?很多年了?我为不清楚道歉。也许举个例子会很有帮助。所以对于一个假设的两个数据集:数据集1:Year:Entry:1980 15 1985 24 1990 22数据集2:Year:Entry:1980 15 1981 11 1982 12 1983 9等等,结果有点混乱,抱歉。我猜评论不允许格式化。对于具有年度数据的数据集,存在年度行。每5年只有一个数据点的数据集每5年只有一行。因此,只有一行数据点实际可用。B Williams-如何确定应该进行左连接?我有一个与海报类似的问题-我有5个变量和5个其他列记录它们的时间戳,并想知道如何将它们合并在一起B Williams-您如何确定应该进行左连接?我有一个与海报类似的问题——我有5个变量和5个其他列记录它们的时间戳