R 根据同一数据帧中不同列的最大值/最小排序值筛选数据帧中的列
我有一个数据框,如下所示。这只是一个例子。真正的数据集要大得多R 根据同一数据帧中不同列的最大值/最小排序值筛选数据帧中的列,r,select,dataframe,dplyr,filtering,R,Select,Dataframe,Dplyr,Filtering,我有一个数据框,如下所示。这只是一个例子。真正的数据集要大得多 Hospital State Mortality Rank aaa AK 9.7 1 bbb AK 10.5 2 ccc AK 11.3 3 ddd AK 11.5 4 eee AL 8.7 1 ggg
Hospital State Mortality Rank
aaa AK 9.7 1
bbb AK 10.5 2
ccc AK 11.3 3
ddd AK 11.5 4
eee AL 8.7 1
ggg AL 9.1 2
hhh AL 9.3 3
mmm AR 9.9 1
nnn AR 10.2 2
ooo AR 10.4 3
ppp AZ 7.5 1
qqq AZ 8.7 2
出于可重复性目的,获取上述数据帧的代码如下
df%汇总(max=max(秩))
worst1一个选项是更改摘要()
中变量的名称,然后更改内部连接()
df
和最差的
worst <- df %>%
group_by(State) %>%
summarise(Rank = max(Rank))
worst1 <- inner_join(df, worst, by = c("State", "Rank"))
最差%
按(州)分组%>%
总结(排名=最高(排名))
worst1一个选项是更改摘要()
中变量的名称,然后更改内部连接()
df
和最差的
worst <- df %>%
group_by(State) %>%
summarise(Rank = max(Rank))
worst1 <- inner_join(df, worst, by = c("State", "Rank"))
最差%
按(州)分组%>%
总结(排名=最高(排名))
worst1这是一个更短的解决方案,不需要创建单独的数据帧。只需使用dplyr::top\n
df %>% group_by(State) %>% top_n(1, Rank)
这是一个更短的解决方案,不需要创建单独的数据帧。只需使用dplyr::top\n
df %>% group_by(State) %>% top_n(1, Rank)
谢谢@NiclasRudolfson的这个好把戏,我不知道top\n
函数。@Sai Ram,同样,df%>%groupby(State)%>%top\n(-1,Rank)
将为您提供每个州排名最低的医院。top\n()将选择每个组中排名值最高的行,因此将为您提供“最差”的医院。如果你想要最好的答案,我建议你使用top\n(1,desc(Rank)
而不是top\n(-1,Rank)
@SaiRam如果答案正确且对你的问题有用,请接受这里的一个答案。感谢@NiclasRudolfson的这个好把戏,我不知道top\n
函数。@SaiRam,同样地,df%>%groupby(State)%%>%top\n(-1,Rank)
将为您提供每个州排名最低的医院。top\n()将为每个组中的排名选择值最高的行,因此将为您提供“最差”的医院。如果您想要最好的医院,我建议top\n(1,描述(Rank)
而不是top\n(-1,Rank)
@SaiRam如果答案正确且对您的问题有用,请在此接受其中一个答案。
df %>% group_by(State) %>% top_n(1, Rank)