r语言 - 计算a中连续0在每行中出现的频率



我有这个数据帧,并希望每次它们出现在一行中时计算零序列的计数,以便输出将是a:2 4, B:1 2 1, C:2 5, D: 2 3, E: 1 1

df <- data.frame(
A=c(1,  0,  0,  1,  1,  0,  0,  0,  0), 
B=c(0,  1,  1,  0,  0,  1,  0,  1,  1),
C=c(0,  0,  1,  1,  0,  0,  0,  0,  0), 
D=c(0,  0,  1,  1,  1,  1,  0,  0,  0),
E=c(1,  0,  1,  1,  1,  1,  0,  1,  1)
)

我们可以通过循环data.frame的列来使用rle,并得到base R中0值的lengths

lapply(df1, function(x) with(rle(x), lengths[!values]))

与产出

$A
[1] 2 4
$B
[1] 1 2 1
$C
[1] 2 5
$D
[1] 2 3
$E
[1] 1 1

数据
df1 <- structure(list(A = c(1, 0, 0, 1, 1, 0, 0, 0, 0), B = c(0, 1, 
1, 0, 0, 1, 0, 1, 1), C = c(0, 0, 1, 1, 0, 0, 0, 0, 0), D = c(0, 
0, 1, 1, 1, 1, 0, 0, 0), E = c(1, 0, 1, 1, 1, 1, 0, 1, 1)), row.names = c(NA, 
-9L), class = "data.frame")

最新更新