Подсчет количества раз, когда встречается значение

#r

#r

Вопрос:

У меня есть переменная (Var), которая хранит 10000 значений и имеет целочисленный характер.

Я хочу подсчитать, сколько раз числовое значение 1000 или выше 1000 встречается в этом списке.

Есть какая-нибудь одна строка в R?

Заранее благодарю вас.

Ответ №1:

sum(Var >= 1000) будет делать это, пока Var это вектор. Если нет, вам нужно указать R, чтобы найти Var внутри любого объекта, содержащего его. Вот пример:

 > set.seed(2)
> Var <- sample(900:1100, 10)
> Var
 [1]  937 1040 1014  933 1085 1084  925 1061  990 1005
> Var >= 1000
 [1] FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE
> sum(Var >= 1000)
[1] 6
 

При этом используется тот факт, что TRUE = 1 и FALSE = 0 .

Комментарии:

1. В качестве примечания, если вы хотите сделать это для » Var == 1000″, обязательно ознакомьтесь с разницей между «==» и «all.equal»

Ответ №2:

 sum(Var>=1000)
 

Предлагаю вам прочитать некоторые вводные документы, подобные вещи возникают постоянно. Кроме того, мы надеемся, что у вас есть не «список», а «вектор». Если это «список», то… ммм, сначала открепите его от списка().

Комментарии:

1. Я думаю, вы имели в виду >= не только >

2. @Spacedman: Спасибо за совет, я играю с вашим сценарием моделирования MC. Я хочу подсчитать, сколько раз наблюдаемое перекрытие происходило в вашей переменной sim, а затем разделить его на количество циклов. Это даст некоторую долю, которую, я думаю, можно использовать как эмпирическое p-значение. Есть предложения?????

3. mean(Var>=1000) это умное сокращение для sum(Var>=1000)/length(Var)

Ответ №3:

возможно, не так эффективно, но мне нравится

 > length(which(Var>=1000))
 

Ответ №4:

Попробуйте это:

  sum(r >= 1000)
 

где r — вектор. Это работает, потому что R автоматически преобразует логические значения TRUE / FALSE в значения 1 и 0 при попытке суммирования логического вектора.

Ответ №5:

Также можно использовать:

 vec <- sample(1:10, 15, replace = TRUE)
table(vec > 2)
 

или

 length(vec[vec>2])