我正在尝试从具有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个元素的列表。你们能帮忙吗?感谢
答案 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)