我有一个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()或者是否还有其他方法?
在基数R中,您可以提供多个参数order(),后续参数用于断开早期变量中的关系,如:
df[order(df$State,df$Mortality.Rate,df$Hospital.Name),]
Run Code Online (Sandbox Code Playgroud)
你可以这样做dplyr:
df %>% group_by(State) %>% arrange(Mortality.Rate, Hospital.Name)
Run Code Online (Sandbox Code Playgroud)