我有两个向量:
A <- 10 10 20 19 24 24 17 18 24 24 24 25 16 16 16 25 25 12 12 12 25 24 24 24 24 2 2
和
B <- 2 4 2 2 2 3 2 3 2 3 2
我想比较A的前两个元素(这里:10 10
)。为什么?因为B的第一次入场是两次。然后我想比较A中的元素3到6(即:20 19 24 24
)因为B&#39的第二个元素是4.依此类推......
当我说我想要比较它们时,我想要做的是查看所选范围的任何元素是否低于阈值(例如低于20)并且其他元素大于另一个阈值(例如23)。
所需的输出将计算这两个条件在多少次 满足(这里最多11次,因为B的长度为11,这意味着我的矢量A有11个范围将被比较)。在此示例中,只有第二个范围才能满足条件。因此输出将是1.如果可以说它是满足条件的第二个范围,那么它也会很好。因此输出将是这样的:
count: 1 range: 2
有没有人知道如何做到这一点?
答案 0 :(得分:2)
可能有帮助
res <- tapply(A,rep(seq_along(B), B), FUN=function(x) any(x < 20) &
any(x>23))+0L
res
# 1 2 3 4 5 6 7 8 9 10 11
# 0 1 0 0 0 0 0 0 0 0 0
d1 <- data.frame(count=res, range=names(res))
head(d1,3)
# count range
#1 0 1
#2 1 2
#3 0 3
A <- c(10, 10, 20, 19, 24, 24, 17, 18, 24, 24, 24, 25, 16, 16, 16,
25, 25, 12, 12, 12, 25, 24, 24, 24, 24, 2, 2)
B <- c(2, 4, 2, 2, 2, 3, 2, 3, 2, 3, 2)