【发布时间】:2015-11-03 15:56:22
【问题描述】:
我有一个数据框,我想按一个变量(a,在下面的示例中)进行分组,并总结不同变量的最大值(b,在下面的示例中)。此外,我想打印对应于最大观察值的第三个(c,在下面的示例中)变量的值。我的代码在某些情况下有效,但如果变量 c 对于组内的所有观察结果为 NA,则返回错误。有没有简单的方法来解决这个问题?
library(dplyr)
mydf<-data.frame(a=c(1,1,2,3,4,4),b=c("car","banana","phone","computer","ipod","phone"),c=c(7,2,3,4,9,8))
mydf
group_by(mydf,a) %>% summarise(max(c),b[which.max(c)])
mydf<-data.frame(a=c(1,1,2,3,4,4),b=c("car","banana","phone","computer","ipod","phone"),c=c(7,2,3,4,NA,NA))
mydf
group_by(mydf,a) %>% summarise(max(c),b[which.max(c)])
【问题讨论】:
-
问题是某些组只有 NA 元素。当 c 是特定组的 NA 时,您的预期输出是什么?试试
group_by(mydf,a) %>% slice(which.max(c)) -
当一个组中的所有观察值都是
NA时,你希望它返回什么? -
我看到我要找的不一定是可能的; slice 功能提供了我所需要的。