我从本地目录导入了一个xlsx文件,这是一个HR记录文件。 它包含许多列,如部门,名称,名称,doj等。 如何找到薪水最高的每个部门的员工姓名?因此,每个部门的工资和员工姓名基本上都是最高工资。
编辑:我将展示我的例子:
> name<-c("Alex","May","Ross","Michael")
> salary<-c(1239,4818,10184,19310)
> department<-c("A","B","A","B")
> sample <- data.frame(name,salary,department)
> sample
name salary department
1 Alex 1239 A
2 May 4818 B
3 Ross 10184 A
4 Michael 19310 B
我希望输出看起来像这样
name salary department
1 Ross 10184 A
2 Michael 19310 B
编辑: 我以前没有提到数据框,因此我得到了正确的输出问题。
答案 0 :(得分:2)
请注意,在您的示例部门拼写错误。我使用了与您使用的拼写相同的拼写。
name<-c("Alex","May","Ross","Michael")
salary<-c(1239,4818,10184,19310)
deparment<-c("A","B","A","B")
sample <- data.frame(name,salary,deparment)
data=data.frame()
for (i in unique(deparment)) {
df=subset(sample, deparment == i)
df=subset(df, salary == max(df$salary))
data=rbind(data,df)
}
data
答案 1 :(得分:0)
dplyr
应该在这里工作:
require(dplyr)
sample %>%
group_by(department) %>%
summarise(salary = max(salary),
name.max = name[salary == max(salary)])
这会获取样本并将其传递给group_by
,summarise
用于相应地对变量进行分组。然后我们找到max(salary)
在department
找到每个group_by
的名称(我们import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { HeroDetailComponent } from './hero-detail.component';
import { HeroesComponent } from './heroes.component';
import { HeroService } from './hero.service';
@NgModule({
imports: [
BrowserModule,
FormsModule,
RouterModule.forRoot([
{
path: 'heroes',
component: HeroesComponent
}
])
],
declarations: [ AppComponent, HeroesComponent, HeroDetailComponent ],
providers: [ HeroService ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
)
答案 2 :(得分:0)
Base R可以做到这一点:
sample[sample$salary==aggregate(sample$salary,by=list(deparment),max)$x,]
此处,aggregate
函数标识每个部门的最高薪水,然后sample[sample$salary==...,]
仅显示与薪资对应的表格行。如果一个部门的几个人有相同的薪水,那么他们就会全部出现。