【发布时间】:2020-03-06 12:22:33
【问题描述】:
我想用 dplyr 在我的分组数据中滞后一个变量。我使用lag 运算符。我发现了类似dplyr lag function returns NAs 这样的问题,有人将https://github.com/tidyverse/dplyr/issues/1540 指向 Hadley 在 2016 年修复的一些错误。所以,我认为它已经解决了。为什么我的 lag 命令仍然抛出 NA?
我使用 R 版本 3.6.1 和 dplyr_0.8.3。
library(tidyverse)
data = data.frame(id=c(1,1,1,2,2,2,3,3,3,4,4,4), time=seq(1:3), x=rep(c(5:8), each=3))
data %>%
group_by(id) %>%
mutate(x_lag = lag(x, n=1, default=NA, order_by=TRUE)) %>%
select(id, time, x, x_lag)
data %>%
group_by(id) %>%
mutate(x_lag = lag(x, n=1, default=NA, order_by=FALSE)) %>%
select(id, time, x, x_lag)
data %>%
group_by(id) %>%
arrange(id) %>%
mutate(x_lag = lag(x, n=1, default=NA, order_by=FALSE)) %>%
select(id, time, x, x_lag)
data %>%
group_by(id) %>%
mutate(x_lag = lag(x, n=1, default=0, order_by=TRUE)) %>%
select(id, time, x, x_lag)
# A tibble: 8 x 4
# Groups: id, time [12]
id time x x_lag
<dbl> <int> <int> <int>
1 1 1 5 NA
2 1 2 5 NA
3 1 3 5 NA
4 2 1 6 NA
5 2 2 6 NA
6 2 3 6 NA
7 3 1 7 NA
8 3 2 7 NA
【问题讨论】: