如何比较矢量的不同长度?

时间:2015-03-20 08:52:51

标签: r vector compare

我有两个向量:

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

有没有人知道如何做到这一点?

1 个答案:

答案 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)