在R中按组创建连续年份计数

在R中按组创建连续年份计数,r,dplyr,tidyr,lubridate,R,Dplyr,Tidyr,Lubridate,我是新手。我正在寻找一个dplyr解决方案(最好)来创建一个向量,显示一个组内连续的年数。如果序列被任何间隙中断,计数器应重新启动,即使它是同一组 我的数据与此类似: 库(lubridate) #> #>附加包装:“lubridate” #>以下对象已从“package:base”屏蔽: #> #>日期、相交、设置差异、联合 图书馆(magrittr) 图书馆(tidyverse) dfn()将为您提供组中的观察次数 df1 <- df %>% group_by(ref

我是新手。我正在寻找一个dplyr解决方案(最好)来创建一个向量,显示一个组内连续的年数。如果序列被任何间隙中断,计数器应重新启动,即使它是同一组

我的数据与此类似:

库(lubridate)
#> 
#>附加包装:“lubridate”
#>以下对象已从“package:base”屏蔽:
#> 
#>日期、相交、设置差异、联合
图书馆(magrittr)
图书馆(tidyverse)
df
n()
将为您提供组中的观察次数

df1 <- df %>% 
    group_by(ref, branch, unit, client, group) %>% 
    mutate(seq_count = n())
df1%
分组依据(参考、分行、单位、客户、集团)%>%
变异(seq_count=n())

如果您只需要摘要,可以使用
摘要
而不是
变异

您可以创建另一个组,该组将在年与年之间出现间隔时更改

library(dplyr)
df %>% 
    add_count(group, grp = cumsum(year - lag(year, default = first(year)) > 1), 
               name = 'seq_count')

# A tibble: 9 x 9
#     id   ref branch  year unit  client group   grp seq_count
#  <dbl> <dbl> <chr>  <dbl> <chr> <chr>  <chr> <int>     <int>
#1     1   561 LA      2000 x     y      z         0         6
#2     2   561 LA      2001 x     y      z         0         6
#3     3   561 LA      2002 x     y      z         0         6
#4     4   561 LA      2003 x     y      z         0         6
#5     5   561 LA      2004 x     y      z         0         6
#6     6   561 LA      2005 x     y      z         0         6
#7     7   561 LA      2007 x     y      z         1         3
#8     8   561 LA      2008 x     y      z         1         3
#9     9   561 LA      2009 x     y      z         1         3
df %>%
  group_by(group, grp = cumsum(year - lag(year, default = first(year)) > 1)) %>%
  mutate(seq_count = n())