我有一个向量,我必须计算数据从0切换到100并返回0的次数。示例如下所示。
Input
X1<-c(100,100,100,0,0,0,0,0,100,100,100,100,100,0,0,0,0,100,100,100,0,0,100,100)
因此输出应该 3 ,因为从0开始的值在一段时间内保持在100并返回到0.我的要求是计算此切换发生的次数。我知道rle但这只能给我一定的长度。
提前感谢您的帮助。
答案 0 :(得分:2)
这看起来足够了
sum(X1[-1] != X1[-length(X1)]) / 2
假设是
X1
X1
的最后一个元素等于第一个元素,也就是说,它最终会切换回原始状态。答案 1 :(得分:2)
你可以做点什么,
sum(diff(X1) == 100)
#[1] 3
#Or
min(sum(diff(X1) == 100), sum(diff(X1) == -100))
#[1] 3
答案 2 :(得分:1)
您可以运行rle
,然后一次迭代values
的三个元素,以查看是否已满足所需条件。
with(rle(X1),
sum(sapply(3:length(lengths), function(i)
values[i-2] == 0 & values[i-1] == 100 & values[i] == 0)))
#[1] 2
答案 3 :(得分:0)
通常用于计数n种情况下的开关(数字或字符):
def wrapper(fun,a,b):
temp = fun(a,b)
return temp
f(
foo(),
bar(),
wrapper(spam,a,b),
)
答案 4 :(得分:0)
sum(((np.diff(x)== 100)|(np.diff(x)==-100))
我想这就是答案,对我有用