首页 > 解决方案 > 没有适用于“c('double','numeric')”类对象的“lead”方法

问题描述

我正在尝试编写一个在某些金融公司数据上运行多元回归(OLS、FE、RE)模型的代码,但在定义新变量时遇到错误。使用下面的代码,我正在尝试使用我在之前的代码中已经定义的变量来定义新的滞后/领先变量:

## Lead/Lag variables
library(dplyr)
df <- df[with(df,order(gvkey,fyear)), ]

df <- df %>%
  group_by(gvkey) %>%
  mutate(lagfyear = lag(fyear,1),
         lagat = lag(at,1),
         lagcash = lag(cash,1),
         lagtang = lag(Q,1),
         lagzscore = lag(zscore,1),
         lagQ = lag(Q,1),
         leadQ = lead(Q,1),
         leadroa = lead(roa, 1),
         leadz = lead(zscore,1),
         leadrd = lead(rd_lagat,1),
         leadlogmktcap = lead(tang,1),
         leadtang = lead(tang, 1),
         leadcf = lead(cf, 1),
         leadlogsale = lead(logsale,1)) %>%
  as.data.frame()

我收到以下错误:

错误:mutate()列有问题leadQ。我leadQ = lead(Q, 1)。x 没有适用于 'lead' 的方法应用于类“c('double', 'numeric')”的对象 i 组 1 中发生错误:gvkey = 1004。

gvkey 是分配给每个公司的唯一密钥。Q 是另一个变量,被定义为公司的市场价值/总重置价值。

这段代码适用于我的同事,所以我不确定为什么它不适合我。任何帮助表示赞赏。

标签: rdplyrerror-handlingregressionpanel-data

解决方案


我想答案写在这里

简而言之,我认为您使用了错误的lag功能。尝试dplyr::lag改用。


推荐阅读