我需要找出一个变量的实例在另一个变量的两个实例之间发生了多少次。给定数据:
v <- c(1, 0, 0, 1, 0, 0, 0, 1)
w <- c(0, 0, 1, 0, 0, 0, 1, 0)
x <- c(0, 0, 0, 1, 1, 0, 0, 0)
y <- c(0, 0, 0, 0, 0, 0, 0, 0)
z <- c(0, 0, 0, 1, 0, 0, 0, 0)
我想看这个:
some_function(v, w)
> 2
some_function(w, x)
> 1
some_function(w, y)
> 0
some_function(v, z)
> 1
这样,第一个参数some_function()
划分的窗口就可以确定第二个参数中是否发生了任何事情。请注意,输出不应区分每个窗口内发生一次或两次的事件,而应计算发生一个或多个事件的窗口数。
您可以rowsum()
按分组使用cumsum()
。这应该很快。
some_function <- function(a, b) sum(rowsum(b, cumsum(a)) > 0)
some_function(v, w)
# [1] 2
some_function(w, x)
# [1] 1
some_function(w, y)
# [1] 0
some_function(w, z) ## possible typo in question
# [1] 1
some_function(v, z)
# [1] 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句