Подсчитать количество векторных значений в диапазоне с R - PullRequest
31 голосов
/ 29 сентября 2010

В R, если вы проверяете условие на векторе, а не на скаляре, он вернет вектор, содержащий результат сравнения для каждого значения в векторе.Например ...

> v <- c(1,2,3,4,5)
> v > 2
[1] FALSE FALSE  TRUE  TRUE  TRUE

Таким образом, я могу определить количество элементов в векторе, которые выше или ниже определенного числа, например, так.

> sum(v > 2)
[1] 3
> sum(v < 2)
[1] 1

Кто-нибудь знает, как я могу определить количество значений в данном диапазоне?Например, как мне определить количество значений больше 2, но меньше 5?

Ответы [ 3 ]

41 голосов
/ 29 сентября 2010

Попробуйте

> sum(v > 2 & v < 5)
4 голосов
/ 29 сентября 2010

В пакете TeachingDemos также есть операторы сравнения% <% и% <=%, которые позволяют вам делать это следующим образом: </p>

sum( 2 %<% x %<% 5 )
sum( 2 %<=% x %<=% 5 )

, что дает те же результаты, что и:

sum( 2 < x & x < 5 )
sum( 2 <= x & x <= 5 )

Что лучше, вероятно, больше зависит от личных предпочтений.

2 голосов
/ 29 сентября 2010

Используйте который:

 set.seed(1)
 x <- sample(10, 50, replace = TRUE)
 length(which(x > 3 & x < 5))
 # [1]  6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...