如何在R中按组排序列

Zel*_*ong 7 r

我有一个data.frame(比如说"df")如下所示:

Hospital.Name | State | Mortality.Rate
'hospital_1'   | 'AA'  | 0.2
'hospital_2'   | 'AA'   | 0.3
'hospital_3'   | 'BB'  | 0.3
'hospital_4'   | 'CC'  | 0.5
Run Code Online (Sandbox Code Playgroud)

(Hospital.Name是唯一的)

现在我想通过"State"命令"Mortality.Rate"组,即将速率命令在某个状态.如果费率存在平局,那么"Hospital.Name"用于解决平局.

我想到了"order()"和"tapply()"函数.我这样编码:

tapply(df$Mortality.Rate, df$State, order, df$Hospital.Name, na.last=NA)
Run Code Online (Sandbox Code Playgroud)

但是,弹出了"参数长度不同"的错误.当"订单"功能应用于切片"费率"时,订单的第二个参数(即df $ Hospital.Name)不会被切片.

我如何将第二个参数(用于解决排序中的关系)传递给tapply()或者是否还有其他方法?

Jth*_*rpe 9

在基数R中,您可以提供多个参数order(),后续参数用于断开早期变量中的关系,如:

df[order(df$State,df$Mortality.Rate,df$Hospital.Name),]
Run Code Online (Sandbox Code Playgroud)


jal*_*pic 5

你可以这样做dplyr:

df %>% group_by(State) %>% arrange(Mortality.Rate, Hospital.Name) 
Run Code Online (Sandbox Code Playgroud)