对于只有2个因子水平的向量获得多个求和

时间:2018-08-08 14:56:31

标签: r vector

我有一个非常大的Vector,其形式如下:

T_Nights <- c(0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0[... and so on])

此矢量有点像每两年10分钟的标志:“ 1” =夜晚,“ 0” =白天。这意味着长度为105264!

由于每24小时的白天和黑夜在一年中的每一天都不同,因此我需要获得多个“ 1”的总和,以获取有关我的夜晚时间的信息。

有没有办法为我所有的“ 1”值获取此向量的总和,但仍与下一包连续的“ 1”值分开。 这样,我可以得到一个值,告诉我一年中的每个夜晚,以分钟为单位(如果乘以10)有多长时间。

1 个答案:

答案 0 :(得分:2)

对于您的问题,可以使用rle函数来计算向量中等值游程的长度和值。

## Example data
T_Nights = c(0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1)

r = rle(T_Nights)
Run Length Encoding
  lengths: int [1:6] 11 12 9 5 4 1
  values : num [1:6] 0 1 0 1 0 1

r$lengths[r$values==1]
[1] 12  5  1