Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据同一数据帧中不同列的最大值/最小排序值筛选数据帧中的列_R_Select_Dataframe_Dplyr_Filtering - Fatal编程技术网

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)