基于分类变量汇总数据

时间:2016-02-20 22:34:19

标签: r aggregate

我正在尝试从具有2159个职称并转换为列表的数据集中计算每个职位的平均薪水。我的代码

> for (i in 1:length(unique(sfs$JobTitle))) {
  a<-print(paste((sfs$JobTitle[[i]])))
  b<-print(paste((mean(sfs$BasePay[[i]]))))
  ms<-list(a,b)
}

也试过

for (i in 1:length(unique(sfs$JobTitle))) {   ms<-matrix((sfs$JobTitle[[i]]),(mean(sfs$BasePay[[i]]))) }

我得到的输出是仅包含2个元素的列表。你们能帮忙吗?感谢

1 个答案:

答案 0 :(得分:0)

也许你不需要for循环。还有其他方法可以做到这一点。 如果你有data.frame试试这个:

agg = aggregate(BasePay ~ JobTitle, data=sfs, mean)

这也可以:

sapply(split(sfs$BasePay, sfs$JobTitle), mean)

如果您坚持使用列表,请使用lapply:

lapply(split(sfs$BasePay, sfs$JobTitle), mean)