【问题标题】:R lag/lead - how to ignore rows before and after existing rows [duplicate]R滞后/领先 - 如何忽略现有行之前和之后的行[重复]
【发布时间】:2018-12-16 00:17:56
【问题描述】:

我在 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

【问题讨论】:

  • 我编辑了问题以使其更清晰。

标签: r dataframe dplyr lag lead


【解决方案1】:

我们可以在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)

【讨论】:

  • 使用first(d)d[1] 有什么好处,还是个人喜好?
  • @Lyngbakr 我认为这是个人喜好。
猜你喜欢
  • 2022-01-17
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
相关资源
最近更新 更多