【问题标题】:R: Insert and fill missing periods in panel dataR:在面板数据中插入和填充缺失的句点
【发布时间】:2015-09-21 17:20:27
【问题描述】:

我正在尝试从 Stata 学习 R,但遇到了以下两个问题,我似乎无法在 R 中找到优雅的解决方案:

1) 我有一个面板数据集,在我的时间变量中有间隙。尽管没有观察到这些行的数据,但我想扩展我的时间变量以包括间隙。

在 Stata 中,我通常会使用 xtset 设置我的 ID 和时间变量,然后使用 tsfill 在此基础上扩展数据集。 R 中是否有同样优雅的方式?

2) 我想用常量变量的数据填充一些新的空白单元格。

在 Stata 中,我将通过使用 l.-prefix 从先前(相对于我的时间变量)观察中复制数据来做到这一点;例如使用replace Con = l.Con

换句话说,我问的是如何从这样的事情出发:

ID     Time     Num     Con
1      Jan      10      A
1      Feb      15      A
1      May      20      A
2      Feb      12      B
2      Mar      14      B
2      Jun      15      B

这样的:

ID     Time     Num     Con
1      Jan      10      A
1      Feb      15      A
1      Mar              A
1      Apr              A
1      May      20      A
2      Feb      12      B
2      Mar      14      B
2      Apr              B
2      May              B
2      Jun      15      B

希望这是有道理的。提前致谢。

【问题讨论】:

    标签: r time-series panel-data


    【解决方案1】:

    您可以尝试从base Rdata.table 加入merge

     library(data.table)
     DT2 <- setDT(df1)[, {tmp <- match(Time, month.abb)
          list(Time=month.abb[min(tmp):max(tmp)])}, .(ID,Con)]
     setkey(df1[, c(1,4,2,3), with=FALSE], ID, Con, Time)[DT2]
     #    ID Con Time Num
     # 1:  1   A  Jan  10
     # 2:  1   A  Feb  15
     # 3:  1   A  Mar  NA
     # 4:  1   A  Apr  NA
     # 5:  1   A  May  20
     # 6:  2   B  Feb  12
     # 7:  2   B  Mar  14
     # 8:  2   B  Apr  NA
     # 9:  2   B  May  NA
     #10:  2   B  Jun  15
    

    注意:最好将缺失值保留为NA

    【讨论】:

      猜你喜欢
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      相关资源
      最近更新 更多