R语言:如何用一行命令(apply族函数)获取各列最大值对应的员工姓名
一行搞定:用apply族函数找出各类极值对应的员工姓名
嘿,这个需求很常见,用sapply(apply家族里的实用成员)一行代码就能轻松实现!
核心思路是:针对你要找最大值的三个列(年龄、薪资、经验),逐个定位到该列最大值所在的行,然后提取对应的员工姓名。直接上可运行的代码:
sapply(c("Employee_age", "Employee_Salary", "Employee_Experience"), function(col) employee$Employee_name[which.max(employee[[col]])])
代码拆解:
c("Employee_age", "Employee_Salary", "Employee_Experience"):先列出我们要处理的三个目标列名;sapply会遍历这个列名向量,对每个列执行后面的匿名函数;which.max(employee[[col]]):快速找到当前列最大值所在的行索引;- 最后用这个索引提取
Employee_name列对应的姓名,结果会返回一个清晰的命名向量,对应每类极值的员工。
小细节补充:
如果某一列有多个员工并列最大值(比如两个员工薪资相同且都是最高),which.max只会返回第一个出现的员工姓名。要是需要获取所有并列极值的员工,只需要把which.max换成逻辑判断即可:
sapply(c("Employee_age", "Employee_Salary", "Employee_Experience"), function(col) employee$Employee_name[employee[[col]] == max(employee[[col]])])
这时返回的会是一个列表,每个元素对应该类极值的所有员工姓名。
内容的提问来源于stack exchange,提问作者Suraj Kumar Talreja
相关产品推荐
相关产品推荐

