我有一个包含面板数据的数据框,我想基于一个公式得到所有完整的观察结果。
虽然从公式中提取变量非常简单(使用get_all_vars),但我还想在公式中加入滞后(在本例中来自dplyr-package)等内容。
让我们采用公式:
For i = 6 To lastColCell.Column Step 3
.Range(.Cells(3, i), .Cells(7 + k, i + 2)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
k = k + A0
'Each A0 should correspond to a different cell if user has different flowback delays
Next i
和数据框
y ~ x1 + lag(x2, 1) + lag(x3, 2)
我想得到这样的东西:
y x1 x2 x3
1 2 3 NA NA
2 3 2 2 2
3 2 6 5 3
4 5 8 6 9
5 1 3 7 4
6 1 0 1 2
最后我想使用它来创建不同时间段的假人(并且由于我的面板不平衡,并且多年来没有完成任何情况,因此在所有时段创建它们都不起作用。)
有什么建议吗?
答案 0 :(得分:2)
如果您使用model.frame
my_df <- read.table(text=" y x1 x2 x3
1 2 3 NA NA
2 3 2 2 2
3 2 6 5 3
4 5 8 6 9
5 1 3 7 4
6 1 0 1 2 ", header=T)
out_df <- model.frame(y ~ x1 + dplyr::lag(x2, 1) + dplyr::lag(x3, 2),
data=my_df,
na.action=NULL)
names(out_df) <- names(my_df)
out_df
#output
y x1 x2 x3
1 2 3 NA NA
2 3 2 NA NA
3 2 6 2 NA
4 5 8 5 2
5 1 3 6 3
6 1 0 7 9