我想在R Dataframe 的行中计数连续出现的次数,只要第一列取该值,并将结果保存在一个新变量中。如果这是我的数据,并且我对1的值感兴趣:
df <- data.frame(
A = c(1, 0, 1, 0, 1),
B = c(0, 0, 1, 1, 1),
C = c(1, 1, 0, 1, 1),
D = c(0, 1, 0, 0, 1),
E = c(1, 0, 1, 0, 0)
)
我想创建以下输出:
df <- data.frame(
A = c(1, 0, 1, 0, 1),
B = c(0, 0, 1, 1, 1),
C = c(1, 1, 0, 1, 1),
D = c(0, 1, 0, 0, 1),
E = c(1, 0, 1, 0, 0),
count = c(1, 0, 2, 0, 4)
)
我尝试了这样的方法,但不确定这是否合理:
df$count <- apply(df[, sapply(df, is.numeric)], 1, function(x) {
r <- rle(x == 1)
max(r$lengths[r$values])
})
而且它也还没有考虑到我对从第一列开始的法术感兴趣。任何帮助都非常感谢!
3条答案
按热度按时间lrl1mhuk1#
创建于2023-03-22带有reprex v2.0.2
使用
match()
代替consecutive_id()
的替代解决方案:如果不想使用
rowwise()
,可以转置 Dataframe :yqlxgs2m2#
使用
rle
41zrol4v3#
另一种方式使用游程编码(
rle
)和“整洁”符号: