如何使用R中的应用函数为子群找到变量的最大值


salary <- data.frame(name=c("Kay","Dave","Jon","Jenny","Jim","Eve","Ed"),
salary=c(60000, 100000, 50000, 80000, 30000, 40000, 20000),
gender=factor(c("F","M","M","F","M","F","M")))

我能够用过滤女性数据帧

femaleFiltered <- salary[ which(salary$gender=='F'), ]

我正在尝试使用

getMaxSal1 <- function(x) {
x[which.max(x$salary),]
}
apply(femaleFiltered,2,getMaxSal1)

但是得到错误";x$salary中的错误:$运算符对于原子向量"无效;

我们可以从base R使用subset

subset(femaleFiltered, salary == max(salary))
#   name salary gender
#4 Jenny  80000      F

或根据OP关于可能使用*apply的要求

femaleFiltered[unlist(lapply(names(femaleFiltered), 
function(nm) which.max(femaleFiltered[nm]$salary))),]
#   name salary gender
#4 Jenny  80000      F

我建议

aggregate(salary$salary, by=list(salary$gender), FUN = max)

哦,刚刚读到需要做一个应用程序函数。

列出两个数据帧,一个用于男性,一个为女性。

然后使用带有FUN=最大的lapply((

lapply(list(femaleFiltered$salary, maleFiltered$salary), max)

最新更新