Merge Panel data to get balanced panel data

前端 未结 2 684
夕颜
夕颜 2020-11-30 14:22

I have several data frames in panel data form. Now I want to merge these panel data frames into one panel data. These data frames have common and different between them. I i

2条回答
  •  情书的邮戳
    2020-11-30 14:54

    There's a function for that. Combine the data frames with rbind. Then use complete. It will look through the groups in variable and fill any with missing values:

    library(tidyr)
    df3 <- do.call(rbind.data.frame, list(df1, df2))
    df3$Month <- as.character(df3$Month)
    df4 <- complete(df3, Month, variable)
    df4$Month <- as.yearmon(df4$Month, "%b %Y")
    df5 <- df4[order(df4$variable,df4$Month),]
    df5
    # Source: local data frame [72 x 8]
    # 
    #       Month variable Beta1 Beta2 Beta3 Beta4 Beta5 Beta6
    #      (yrmn)   (fctr) (int) (int) (int) (int) (int) (int)
    # 1  Jan 2005        A     1     2     3     4     5     6
    # 2  Feb 2005        A     2     3     4     5     6     7
    # 3  Mar 2005        A     3     4     5     6     7     8
    # 4  Apr 2005        A     4     5     6     7     8     9
    # 5  May 2005        A     5     6     7     8     9    10
    # 6  Jun 2005        A     6     7     8     9    10    11
    # 7  Jul 2005        A     7     8     9    10    11    12
    # 8  Aug 2005        A     8     9    10    11    12    13
    # 9  Sep 2005        A     9    10    11    12    13    14
    # 10 Oct 2005        A    10    11    12    13    14    15
    # ..      ...      ...   ...   ...   ...   ...   ...   ...
    

    An alternative implementation with dplyr & tidyr:

    library(dplyr)
    library(tidyr)
    
    df3 <- bind_rows(df1, df2) %>% 
      complete(Month, variable)
    

提交回复
热议问题