计算数据帧中跨列的最长连续序列-R

问题描述

我有一个像下面这样的数据框...

df <- data.frame(B1994 = c(1,1,0),B1995 = c(1,B1996 = c(0,B1997 = c(1,1),B1998 = c(1,1)
)

我现在正在尝试计算此数据帧中所有列(每行)的最长连续0序列,并使用这些值填充新列,例如下面的数据帧...

df2 <- data.frame(B1994 = c(1,Longest_0_Interval = c(1,3,5,3)
)

在R中有一个简单的解决方案吗?

解决方法

一个dplyr选项可能是:

df %>%
 rowwise() %>%
 mutate(Longest_0_Interval = with(rle(c_across(everything())),max(lengths[values == 0])))

   B1994 B1995 B1996 B1997 B1998 Longest_0_Interval
   <dbl> <dbl> <dbl> <dbl> <dbl>              <int>
 1     1     1     0     1     1                  1
 2     0     1     0     0     0                  3
 3     0     1     0     1     0                  1
 4     0     0     0     0     0                  5
 5     1     0     0     0     1                  3
 6     0     1     0     1     0                  1
 7     0     1     1     0     1                  1
 8     1     1     1     1     0                  1
 9     1     0     1     1     0                  1
10     0     0     0     1     1                  3
,

您可以使用dcc.Input

rle()