r - R plm lag() 忽略面板结构
问题描述
我想创建一个变量的滞后。在面板数据设置中,显然只在每个面板内考虑滞后。
为什么plm
不lag()
尊重面板结构(默认情况下),有没有办法改变它(无需手动 dplyr 它)?
# Load example data
data("EmplUK", package = "plm")
Em <- pdata.frame(EmplUK, index=c('firm', 'year'))
# how I think it should have worked
Em$lwage_incorrect = lag(Em$wage)
# what actually works
Em= Em %>% group_by(firm) %>% mutate(lwage_correct = lag(wage))
解决方案
当我运行您的代码时,我会使用您的两种方法获得特定于面板的滞后,因此您可能需要再次检查它。当我不清楚lag
我实际使用的是什么功能(例如,有一个 in base R
、一个 inplm
和一个 in dplyr
)时,我也遇到过类似的麻烦。运行Em$lwage = plm::lag(Em$wage)
消除了这种歧义。
推荐阅读
- c++ - 从不同的地方调用 C++ 函数会导致不同的行为
- php - 如何阻止用户相互编辑信息
- optaplanner - OptaPlanner,在 VariableListener 中设置另一个影子变量
- floating-point - 如何在 Crystal 中解析 80 位浮点数?
- sql-server - 从不受支持的配置升级 TFS 2012
- javascript - 使用 Javascript 设置 HubSpot 隐藏表单字段的值
- python - 比较两个熊猫数据框并显示差异
- python - Tensorflow:使用 ImageDataGenerator 时训练不正确。尽管模型仅输出 1 个类别,但仍提供 99% 的训练准确度
- r - 在具有不同数据类型的情况下从 long 扩展/枢轴变宽时遇到问题
- authorization - 授权不知道对象 ID