我试图从超过1M obs的数据框中找到连续运行的'1'值的数量。11个二进制变量。我在这里看过许多类似的问题,但是没有一个像我的这样处理冗长的数据帧。
我可以逐行逐行找到连续的“ 1”,但我正在寻找一种可以更优雅地处理整个数据帧的解决方案。
简单的示例数据:
test <- data.frame(v1=c(1,0,1),v2=c(1,1,1),v3=c(0,1,1),v4=c(1,1,0),v5=c(1,1,1))
test
vtest <- as.vector(test[1,])
vtest
r <- rle(vtest)
r$length[r$values ==1]
row1_max <- lapply(r$length[r$values ==1], FUN=max)
row1_max
对于我的数据帧的每一行来说,找到最大连续运行次数“ 1”而不必逐行查找每一行的最佳方法是什么?
我的真实数据集还包含一个ID#变量,该变量唯一地标识每个记录,我最终想知道ID#的最大连续运行次数,因此,我们将不胜感激。
提前致谢!
您可以apply
用来将函数应用于数据框的每一行:
apply(test, 1, function(x) {
r <- rle(x)
max(r$lengths[as.logical(r$values)])
})
这将返回1
每行连续的s的最大数量:
[1] 2 4 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句