我有以下问题.我想计算小于或等于零的值的出现次数.在以下数据中的示例我有3次出现1(0,0,0),2(-1,-2),3(0,0).R中是否有任何函数构建来计算连续出现的次数.
a <- c(2,4,5,3,2,4,7,0,0,0,4,3,2,-1,-2,3,2,0,0,4)
Run Code Online (Sandbox Code Playgroud)
如果要计算值低于零的运行次数:
sum(rle(a <= 0)$values)
Run Code Online (Sandbox Code Playgroud)
这使:
[1] 3
Run Code Online (Sandbox Code Playgroud)
这是如何工作的:
rle函数,您可以创建一个runlength-encoding a <= 0.输出rle(a <= 0)是:
Run Length Encoding
lengths: int [1:7] 7 3 3 2 2 2 1
values : logi [1:7] FALSE TRUE FALSE TRUE FALSE TRUE ...
Run Code Online (Sandbox Code Playgroud)现在你只需要总结rle-object 的值部分:
> sum(rle(a <= 0)$values)
[1] 3
Run Code Online (Sandbox Code Playgroud)你可以使用rle:
> sum(rle(a<=0)$values)
[1] 3
Run Code Online (Sandbox Code Playgroud)
说明:
rle打破所述载体引入运行其是> 0或<= 0.$values要么true或false根据相应的运行是否满足谓词(a <= 0)或它的否定.您希望运行对应于该值TRUE,该函数将sum这些TRUEs 强制为1.