R lag/lead - 如何忽略现有行前后的行

R lag/lead - how to ignore rows before and after existing rows

我在 R 中有这个数据框

   id      a        b        c        d
1  42      3        2       NA        5
2  42     NA        6       NA        6
3  42      1       NA        7        8

有这样的功能

library(dplyr)

dataframe %>%
 mutate(e = lead(d)) 

我在第三行 NA 因为没有第四行,但是我怎样才能从第一行 - 5 中获取值?结果应该是这样的

   id      a        b        c        d         e
1  42      3        2       NA        5         6
2  42     NA        6       NA        6         8
3  42      1       NA        7        8         5

我们可以在lead函数的default参数中使用first函数。

library(dplyr)

dat2 <- dat %>%
  mutate(e = lead(d, default = first(d)))
dat2
#   id  a  b  c d e
# 1 42  3  2 NA 5 6
# 2 42 NA  6 NA 6 8
# 3 42  1 NA  7 8 5

数据

dat <- read.table(text = "   id      a        b        c        d
1  42      3        2       NA        5
2  42     NA        6       NA        6
3  42      1       NA        7        8",
                  header = TRUE)