聚合-na.忽略和na.通过R和因子(按因子分组)?

聚合-na.忽略和na.通过R和因子(按因子分组)?,r,R,我有一个包含工资测试数据的数据集。并非所有单元格都有值,因此我使用了na.action=na.pass,na.rm=TRUE,但它给了我一个错误,因为我想用JobTitle进行聚合,这是一个因子 到目前为止,我已经开发了以下代码: aggregate(salaries$JobTitle, list(pay = salaries$TotalPay), FUN=mean, na.action=na.pass, na.rm=TRUE) 我的测试数据包含以下列: 'data.frame': 10

我有一个包含工资测试数据的数据集。并非所有单元格都有值,因此我使用了na.action=na.pass,na.rm=TRUE,但它给了我一个错误,因为我想用JobTitle进行聚合,这是一个因子

到目前为止,我已经开发了以下代码:

aggregate(salaries$JobTitle, 
list(pay = salaries$TotalPay),
FUN=mean,
na.action=na.pass,
na.rm=TRUE)
我的测试数据包含以下列:

'data.frame':   104 obs. of  36 variables:
 $ Id              : int  1 2 3 4 5 6 7 8 9 10 ...
 $ EmployeeName    : Factor w/ 11 levels "","ALBERT PARDINI",..: 10 7 2 4 11 6 3 5 9 8 ...
 $ JobTitle        : Factor w/ 9 levels "","ASSISTANT DEPUTY CHIEF II",..: 8 4 4 9 6 2 3 7 3 5 ...
 $ BasePay         : num  167411 155966 212739 77916 134402 ...
 $ OvertimePay     : num  0 245132 106088 56121 9737 ...
 $ OtherPay        : num  400184 137811 16453 198307 182235 ...
 $ Benefits        : logi  NA NA NA NA NA NA ...
 $ TotalPay        : num  567595 538909 335280 332344 326373 ...
 $ TotalPayBenefits: num  567595 538909 335280 332344 326373 ...
 $ Year            : int  2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 ...
 $ Notes           : logi  NA NA NA NA NA NA ...
 $ Agency          : Factor w/ 2 levels "","San Francisco": 2 2 2 2 2 2 2 2 2 2 ..
出现的错误代码是

Warning messages:
1: In mean.default(X[[i]], ...) :
  argument is not numeric or logical: returning NA
2: In mean.default(X[[i]], ...) :
  argument is not numeric or logical: returning NA
等等


我已经尝试过使用工资$Id,它工作起来很神奇,所以我假设代码是正确的,也许我需要更改JobTitle的数据类型?

如果我们得到“TotalPay
按“JobTitle”分组的
平均值,那么
公式方法将是

aggregate(TotalPay~JobTitle, salaries, mean, na.rm=TRUE, na.action=na.pass)
或使用

aggregate(salaries$TotalPay, list(salaries$JobTitle), FUN=mean, na.rm=TRUE) 
数据
set.seed(24)

工资您的
职务
是一个
因素
变量。您希望获得的
平均值
是哪个变量?。我认为应该是相反的。i、 e.
aggregate(TotalPay~JobTitle,工资,平均数,na.rm=TRUE,na.action=na.pass)
谢谢。它起作用了。我现在意识到,我有更多的记录可以显示,而head函数只提供按JobTitle排序的6条顶级记录。那个么,是否有一个类似于SQL order by的函数来按所选列进行排序,而且,我想答案是否定的,但我们可以将年份添加到聚合中吗?我正在努力使某个职位的总薪酬与去年同期相比有所变化。我不熟悉R,因此所有的问题都很愚蠢。@Kalenji如果您还需要“Year”作为分组变量,您可以将其添加到第二种方式的
列表中,或者在
~
@Kalenji的lhs上的公式方法中使用,其他选项包括
dplyr
数据表
。例如,
library(dplyr);工资%>%group_by(职务,年份)%%>%SUMMARY(工资=平均值(TotalPay,na.rm=TRUE))
我曾尝试使用上述代码库(dplyr)工资
set.seed(24)
salaries <- data.frame(JobTitle = sample(LETTERS[1:5], 20,
       replace=TRUE), TotalPay= sample(c(1:20, NA), 20))