对具有dplyr和rle条件的组中的连续值进行计数

对具有dplyr和rle条件的组中的连续值进行计数,r,conditional,dplyr,sequence,run-length-encoding,R,Conditional,Dplyr,Sequence,Run Length Encoding,我的问题与下面提出的问题非常相似,但是我想添加一个额外的命令,以便仅在序列具有两个以上连续值时返回cases 当给定的序列运行在给定的纪元和给定的年份内有两个以上的连续数字时,我如何计算连续“成功”的数量(即$CONSERC中的1) 类似问题: . 为了进行比较,我修改了该问题中使用的示例: library(dplyr) df <- data.frame(Era=c(1,1,1,1,1,1,1,1,1,1),Year = c(1,2,2,3,3,3,3,3,3,3), consec = c

我的问题与下面提出的问题非常相似,但是我想添加一个额外的命令,以便仅在序列具有两个以上连续值时返回cases

当给定的序列运行在给定的纪元和给定的年份内有两个以上的连续数字时,我如何计算连续“成功”的数量(即$CONSERC中的1)

类似问题: . 为了进行比较,我修改了该问题中使用的示例:

library(dplyr)
df <- data.frame(Era=c(1,1,1,1,1,1,1,1,1,1),Year = c(1,2,2,3,3,3,3,3,3,3), consec = c(0,0,1,0,1,1,0,1,1,1))

df %>%
  group_by(Era,Year) %>%
  do({tmp <- with(rle(.$consec==1), lengths[values])
      data.frame(Year= .$Year, Count=(length(tmp)))}) %>% 
  slice(1L)

> Source: local data frame [3 x 3]
> Groups: Era, Year

>   Era Year Count
> 1   1    1     0
> 2   1    2     1
> 3   1    3     2
> 

任何建议都将不胜感激。

我们需要创建一个长度为
的逻辑索引,并获得它的

df %>%
   group_by(Era, Year) %>% 
   do({ tmp <- with(rle(.$consec), sum(lengths > 2))
   data.frame(Count = tmp)})
#   Era  Year Count
#  <dbl> <dbl> <int>
#1     1     1     0    
#2     1     2     0
#3     1     3     1
df%>%
分组依据(年代、年份)%>%
do({tmp 2))
data.frame(Count=tmp)})
#纪年计数
#    
#1     1     1     0    
#2     1     2     0
#3     1     3     1
df %>%
   group_by(Era, Year) %>% 
   do({ tmp <- with(rle(.$consec), sum(lengths > 2))
   data.frame(Count = tmp)})
#   Era  Year Count
#  <dbl> <dbl> <int>
#1     1     1     0    
#2     1     2     0
#3     1     3     1