r - 滞后函数返回 NA

标签 r dplyr lag

有没有人使用 dplyr 解释这样的结果?包裹?

我有一个数据框 df

    library(dplyr)
    df = data_frame(
      'id' = c(1,2,2,2,2,3,3,3,3),
      'start' = c(881, 1611, 1611, 1642, 1764, 0, 0, 28, 59),
      'end' = c(1089, 1819, 1819, 1850, 1972, 208,  208,236, 267))

那看起来像
    # Source: local data frame [9 x 3]
    #
    # id start   end
    # (dbl) (dbl) (dbl)
    # 1     1   881  1089
    # 2     2  1611  1819
    # 3     2  1611  1819
    # 4     2  1642  1850
    # 5     2  1764  1972
    # 6     3     0   208
    # 7     3     0   208
    # 8     3    28   236
    # 9     3    59   267

id 分组后并在结束列中应用滞后,我预计每个 id 都会丢失一个.
    df %>% 
      group_by(id) %>%
      mutate(end.prev = lag(end))

但我有
    # Source: local data frame [9 x 4]
    # Groups: id [3]
    # 
    # id start   end end.prev
    # (dbl) (dbl) (dbl)    (dbl)
    # 1     1   881  1089       NA
    # 2     2  1611  1819       NA
    # 3     2  1611  1819     1819
    # 4     2  1642  1850     1819
    # 5     2  1764  1972     1850
    # 6     3     0   208       NA
    # 7     3     0   208       NA  <- I don't understant this NA
    # 8     3    28   236       NA  <- Neither this one
    # 9     3    59   267       NA  <- nor this other

我正在使用 cran dplyr 0.4.3 中可用的最新版本(我的 R 版本是 3.2.5)

最佳答案

我正在使用版本 dplyr版本1.0.5它似乎正在起作用。如果版本不重要,那么也许只需升级您的 dplyr到最新版本。

library(tidyverse)
df = tibble(
  'id' = c(1,2,2,2,2,3,3,3,3),
  'start' = c(881, 1611, 1611, 1642, 1764, 0, 0, 28, 59),
  'end' = c(1089, 1819, 1819, 1850, 1972, 208,  208,236, 267))

df %>% 
  group_by(id) %>%
  mutate(end.prev = lag(end))
#> # A tibble: 9 x 4
#> # Groups:   id [3]
#>      id start   end end.prev
#>   <dbl> <dbl> <dbl>    <dbl>
#> 1     1   881  1089       NA
#> 2     2  1611  1819       NA
#> 3     2  1611  1819     1819
#> 4     2  1642  1850     1819
#> 5     2  1764  1972     1850
#> 6     3     0   208       NA
#> 7     3     0   208      208
#> 8     3    28   236      208
#> 9     3    59   267      236
创建于 2021-04-16 由 reprex package (v2.0.0)

关于r - 滞后函数返回 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37706633/

相关文章:

r - dplyr:如何编写与 table() 基本函数等效的函数并保留列名?

python - 如何找到两个变量之间的相关性但跨越不同的时间线('lagged correlation')

C#/Winforms 应用卡住/滞后

r - 从 Excel 导入数据但收到警告消息

R plot data.frame 以获得更有效的数据概览

使用之前的估计值重新启动混合效应模型估计

cuda - 在长内核期间避免延迟显示的任何提示?

r - 世界地图ggplot2上的边框和颜色

r - 使用条件将数据从一个表子集到不同的表中

r - 使用 R(DBI 包)从 SQL Server 表中删除行