【问题标题】:Merge data frames with annual observations and time-period observations: how to duplicate time-period observations so that they are annual将数据框与年度观测值和时间段观测值合并:如何复制时间段观测值以使其成为年度观测值
【发布时间】:2021-01-29 20:04:18
【问题描述】:

我需要合并两个数据框来创建一个新的数据框 (df3)。我遇到了麻烦,因为一个 df 有年度观察,而另一个有“时间段”观察。

df1 在组织层面进行了观察,按国家/地区分组,在多个时间段内反复进行调查。

df2 对每个国家都有年度观察结果。我创建了一个按国家/地区匹配的关键变量 ID。

我需要 df3 对每个国家/地区的每个组织进行年度观察。

df1 的结构是这样的,每个国家/地区都有更多的“从”/“到”年份范围。每个组织/年份范围的组合都是独一无二的:

ID        from         to         organization     
AFG       1960         1965       Afghan.A         
AFG       1960         1965       Afghan.B
ALB       1960         1965       Alb.A
ALB       1960         1965       Alb.B

df2 的结构如此,每年对每个国家/地区都有独特的观察:

 ID       Year    GDP.per.capita
 AFG      1960    59.77319
 AFG      1961    59.86087
 ALB      1960    78.70639
 ALB      1961    82.09523

我需要 df3 来具有这种结构,并在每个国家/地区每年对每个种族进行观察。我基本上想复制 df1 中的每个观察结果,以便每年观察每个组织,然后合并来自 df2 的年度变量:

ID       Year     GDP.per.capita      organization         
AFG      1960     59.77319            Afghan.A
AFG      1960     59.77319            Afghan.B
AFG      1961     59.86087            Afghan.A
AFG      1961     59.86087            Afghan.B
ALB      1960     78.70639            Alb.A
ALB      1960     78.70639            Alb.B
ALB      1961     82.09523            Alb.A
ALB      1961     82.09523            Alb.B

任何建议将不胜感激!

【问题讨论】:

    标签: r join merge


    【解决方案1】:

    这行得通吗:

    > library(dplyr)
    > df1 %>% select(-to) %>% inner_join(df2, by= c('ID' = 'ID')) %>% select(-from) %>% relocate(1,3,4,2)
    # A tibble: 8 x 4
      ID     Year GDP.per.capita organization
      <chr> <dbl>          <dbl> <chr>       
    1 AFG    1960           59.8 Afghan.A    
    2 AFG    1961           59.9 Afghan.A    
    3 AFG    1960           59.8 Afghan.B    
    4 AFG    1961           59.9 Afghan.B    
    5 ALB    1960           78.7 Alb.A       
    6 ALB    1961           82.1 Alb.A       
    7 ALB    1960           78.7 Alb.B       
    8 ALB    1961           82.1 Alb.B     
    

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多