滞后变量r



我有以下数据集:

library(dplyr)
dat <- tibble(
IDnumber = rep(c("IT974", "IT920", "IT901"), c(2,2,3)), 
Sales = c(16565,16895,2842,2069,1563,1247,1115), 
Leverage = c(1.25,1.29,1.36,1.22,1.21,1.13,1.13)
)

我要做的是滞后变量一年,只有当我的ID号与前一年相同时,否则我会显示值0。

我使用了这个代码,但它不起作用:

library(Hmisc)
for(i in c(length(IDnumber))) {
if (IDnumber[i] == IDnumber[i-1])
Lag_Leverage <- Lag(Leverage)
if (IDnumber[i] != IDnumber[i-1])
Lag_Leverage <- 0
}

你可以这样做:

library(dplyr)
dat <- tibble(
IDnumber = rep(c("IT974", "IT920", "IT901"), c(2,2,3)), 
Sales = c(16565,16895,2842,2069,1563,1247,1115), 
Leverage = c(1.25,1.29,1.36,1.22,1.21,1.13,1.13)
)
dat %>% group_by(IDnumber) %>% 
mutate(Lag_Sales = lag(Sales, default=0), 
Lag_Leverage = lag(Leverage, default=0))
# # A tibble: 7 x 5
# # Groups:   IDnumber [3]
#   IDnumber Sales Leverage Lag_Sales Lag_Leverage
#   <chr>    <dbl>    <dbl>     <dbl>        <dbl>
# 1 IT974    16565     1.25         0         0   
# 2 IT974    16895     1.29     16565         1.25
# 3 IT920     2842     1.36         0         0   
# 4 IT920     2069     1.22      2842         1.36
# 5 IT901     1563     1.21         0         0   
# 6 IT901     1247     1.13      1563         1.21
# 7 IT901     1115     1.13      1247         1.13

最新更新