我有一个数据框,每个单元格都有一个0或1.我想要一个代码遍历每一列并计算每列中的数量。如果1s连续45次进入列的单元格,那么该列的出现应该为1。我还想知道这种情况是否在一列中多次出现。因此,出现值可以是0(如果1s不连续45次进入列中),则为1或更多。我试着为此编码,但我不知道该怎么做。感谢您的任何帮助。
P.S如果1连续出现90次,那不应该让我出现2次。
答案 0 :(得分:1)
我们可以使用rleid
data.table
library(data.table)
setDT(df1)[, lapply(.SD, function(x) {x1 <- rleid(x); list(table(x1[x!=0]))})]
或其他选项rle
来自base R
lapply(df1, function(x) with(rle(x), lengths[values==1]))
set.seed(24)
df1 <- as.data.frame(matrix(sample(0:1, 5*20, replace = TRUE), ncol=5))