R:插入并填充面板数据中缺失的句点

问题描述 投票:0回答:2

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

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

在 Stata 中,我通常会通过使用

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

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

在 Stata 中,我将通过使用

l.
前缀复制之前(相对于我的时间变量)观测值的数据来做到这一点;例如使用
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
2个回答
4
投票

您可以尝试

merge
中的
base R
data.table
加入

 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


0
投票

您可以使用R中的fill()函数或complete()函数来填补面板数据中缺失的空白。 fill() 函数要求您首先转换 tsibble 中的数据,然后填充这些缺失的间隙。另一方面,完整功能是 tidyverse 软件包的一部分,可以直接填补面板数据中缺失的空白。 要了解更多信息https://thedatahall.com/filling-gaps-in-time-series-and-panel-data-using-r/

© www.soinside.com 2019 - 2024. All rights reserved.