【发布时间】:2018-12-07 01:22:15
【问题描述】:
我有以下数据集:
Name Year VarA VarB Data.1 Data.2
A 2016 L H 100 101
A 2017 L H 105 99
A 2018 L H 103 105
A 2016 L A 90 95
A 2017 L A 99 92
A 2018 L A 102 101
我想通过分组添加一个滞后变量:Name、VarA、VarB,以便我的数据看起来像:
Name Year VarA VarB Data.1 Data.2 Lg1.Data.1 Lg2.Data.1
A 2016 L H 100 101 NA NA
A 2017 L H 105 99 100 NA
A 2018 L H 103 105 105 100
A 2016 L A 90 95 NA NA
A 2017 L A 99 92 90 NA
A 2018 L A 102 101 99 90
我找到了以下链接,这很有帮助:debugging: function to create multiple lags for multiple columns (dplyr)
我正在使用以下代码:
df <- df %>%
group_by(Name) %>%
arrange(Name, VarA, VarB, Year) %>%
do(data.frame(., setNames(shift(.[,c(5:6)], 1:2), c(seq(1:8)))))
但是,滞后抵消了与名称相关的所有数据,而不是我想要的分组,所以只有 2018 年是准确滞后的。
Name Year VarA VarB Data.1 Data.2 Lg1.Data.1 Lg2.Data.1
A 2016 L H 100 101 NA NA
A 2017 L H 105 99 100 NA
A 2018 L H 103 105 105 100
A 2016 L A 90 95 103 105
A 2017 L A 99 92 90 103
A 2018 L A 102 101 99 90
如何为每个新的分组组合(例如 Name / VarA / VarB)重置滞后?
【问题讨论】:
-
我想你会
group_by(Name, VarA, VarB)而不仅仅是group_by(Name)。