【问题标题】:Reshaping df into data panel model将 df 重塑为数据面板模型
【发布时间】:2015-09-12 04:33:51
【问题描述】:

我有以下几组数据:

df1 <- data.frame( country = c("A", "B","A","B"), year = c(2011,2011,2012,2012), variable_1= c(1,3,5,7))    

df2 <- data.frame( country = c("A", "B","A","B"), year = c(2011,2012,2012,2013), variable_2= c(2,4,6,8))

df3 <- data.frame( country = c("A", "C","C"), year = c(2011,2011,2013), variable_3= c(9,9,9))

我想把它们重塑成面板数据模型,所以我可以得到如下结果:

df4 <- data.frame( country = c("A","A","A","B","B","B","C","C","C"), year = c(2011,2012,2013,2011,2012,2013,2011,2012,2013), variable_1 = c(1,5,NA,3,7,NA,NA,NA,NA), variable_2 = c(2,6,NA,NA,4,8,NA,NA,NA), variable_3 = c(9,NA,NA,NA,NA,NA,9,NA,9) )

我已搜索此信息,但我找到的主题 (Reshaping panel data) 对我没有帮助。

关于如何做到这一点的任何想法?我的真实数据集有数千行(“国家”)、几个变量、年份和 NA,所以请考虑到这一点。

【问题讨论】:

    标签: r


    【解决方案1】:

    试试

    library(tidyr)
    library(dplyr)
    
    Reduce(full_join, list(df1, df2, df3)) %>% 
      complete(country, year)
    

    这给出了:

    #Source: local data frame [9 x 5]
    #
    #  country  year variable_1 variable_2 variable_3
    #    (chr) (dbl)      (dbl)      (dbl)      (dbl)
    #1       A  2011          1          2          9
    #2       A  2012          5          6         NA
    #3       A  2013         NA         NA         NA
    #4       B  2011          3         NA         NA
    #5       B  2012          7          4         NA
    #6       B  2013         NA          8         NA
    #7       C  2011         NA         NA          9
    #8       C  2012         NA         NA         NA
    #9       C  2013         NA         NA          9
    

    【讨论】:

    • 我自己刚刚发现了 Reduce,很高兴你在这里提醒了我。我想你可以做Reduce(full_join, list(df1, df2, df3)) %&gt;% complete(country, year)
    • 你是对的。它可以被简化。我会相应地进行编辑。
    • 不错的解决方案。 tidyr添加了有用的新功能
    • 我无法重现你的代码;我收到与“%>%”相关的错误。由于我是一个初学者,我认为我做错了什么......(错误:找不到函数“%>%”)
    • @Gil33 你必须加载包
    猜你喜欢
    • 2014-10-10
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    相关资源
    最近更新 更多