【发布时间】:2017-10-08 18:40:18
【问题描述】:
我有一个如下的数据框。它只是一个例子。真实的数据集要大得多。
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 <- data.frame(Hospital=c("aaa","bbb","ccc","ddd","eee","ggg","hhh","mmm","nnn","ooo","ppp","qqq"),State=c("AK","AK","AK","AK","AL","AL","AL","AR","AR","AR","AZ","AZ"), Mortality=c(9.7,10.5,11.3,11.5,8.7,9.1,9.3,9.9,10.2,10.4,7.5,8.7),Rank=c(1,2,3,4,1,2,3,1,2,3,1,2))
当我传递一个名为最差的参数时,我想从排名最低的数据框中提取医院和州列。
预期的输出应该是这样的
Hospital State
ddd AK
hhh AL
ooo AR
qqq AZ
即使我可以得到如下结果,我也可以使用 dplyer 的 select 功能并得到上述预期结果。
Hospital State Mortality Rank
ddd AK 11.5 4
hhh AL 9.3 3
ooo AR 10.4 3
qqq AZ 8.7 2
我使用下面的代码来获取每个组中排名最低的值的列表。对象最差 1 具有每个组的所有排名最低的值的列表。
worst<-df %>% group_by(State) %>% summarise(max = max(Rank))
worst1 <- as.vector(worst[,2, drop=FALSE])
想知道我是否可以使用它来提取我的预期输出,或者是否有更简单的方法可以直接获得所需的输出。
我尝试使用这个df[df$Rank %in% worst1,],但我没有得到任何结果。任何形式的帮助都会非常有用。提前致谢
【问题讨论】:
标签: r select dataframe dplyr filtering