2016-04-01 3 views
2

Я хотел бы считать все строки, в которых сопоставляются два критерия. Мой подход:Countif с несколькими критериями в R

a <- c(2,1,2,2,3,4,2,1,9) 
b <- c(2,1,2,1,4,4,5,6,7) 
c <- data.frame(a,b) 
sum((c['a']==2) && (c['b']==2)) 

, но почему-то это дает 1 вместо двух. Как я могу подсчитать строки, если несколько критериев совпадают?

+2

'&' векторизован, '&&' оценивает только первое совпадение – mtoto

ответ

3

Я думаю, вы используете неправильный оператор ampersand. Попробуйте это:

sum(c['a']==2 & c['b']==2) 
[1] 2 
0

Вы можете также подмножество в data.frame, а затем найти строки для этого.

nrow(c[a==2 & b==2, ]) 
# [1] 2 

P.S: Рекомендуется не использовать c в качестве переменной, как это также является функцией базы R.

+0

Спасибо за ответ. Это просто названо c в примере, в реале у меня есть лучшее имя ;-) – meles

+0

@meles ohh..great! –

Смежные вопросы