使用列的值过滤器计算平均值

mql*_*ner 2 r

我创建了这个小数据框:

employee <- c('Yossi ','Pitt ','Deepak','Golan')
salary <- c(21000, 23400, 26800,91000)
testd <- data.frame(employee,salary)
Run Code Online (Sandbox Code Playgroud)

我写的时候:

mean(testd$salary) 
Run Code Online (Sandbox Code Playgroud)

我得到了正确答案:40550

但是当我试图计算大于25000的工资的平均值时,我得到了这个结果.

mean(testd$salary>=25000)
# [1] 0.5
Run Code Online (Sandbox Code Playgroud)

而不是由此计算组成的58900:(26800 + 91000)/ 2

我做错了什么?

Nis*_*nth 9

尝试:

mean(testd$salary[testd$salary>=25000])
Run Code Online (Sandbox Code Playgroud)

实际上testd$salary>=25000是一个boolean值向量,它会在您调用时自动映射到numeric类型(True = 1,False = 0)mean.


Gia*_*uca 6

使用dplyr这段代码你可以得到正确的答案:

library(dplyr)
testd %.%
  select(employee, salary) %.%
  filter(salary > 25000) %.%
  summarise(mean = mean(salary))
Run Code Online (Sandbox Code Playgroud)