r - dplyr top_n 返回多行
问题描述
Dplyr 提供了一个函数 top_n(),但是如果值相等,它会返回所有行(多于一个)。我想每组只返回一行。请参见下面的示例。
df <- data.frame(id1=c(rep("A",3),rep("B",3),rep("C",3)),id2=c(8,8,4,7,7,4,5,5,5))
df %>% group_by(id1) %>% top_n(n=1)
解决方案
您可以使用arrange
和的组合slice
df %>%
group_by(id1) %>%
arrange(desc(id2)) %>%
slice(1)
如果您想要 larges 元素,请在安排中使用desc
with,否则将其排除在外。
显然也是slice_head
您正在寻找的功能的新名称
df %>%
group_by(id1) %>%
arrange(desc(id2)) %>%
slice_head(id2, n=2)
推荐阅读
- python - 如何使用Python smtplib 监控邮箱是否收到新邮件
- css - 如何设置 Concrete5 表单的样式?
- python - python中的标准差
- javascript - 将对象合并为一个并覆盖现有对象 - javascript es6
- x86 - grpc++_reflection 库是否随 vcpkg install grpc for x86-windows 一起提供?
- ios - 如何检查电子邮件地址是 Apple 的私人电子邮件还是实际电子邮件
- spring - Spring Cloud Gateway 限制请求有效负载大小
- jax-rs - RESTEasy 不提供静态页面
- git - 强制 git pull 通过丢弃所有本地提交来解决分歧?
- sql - 如何在单击 oracle apex 中的每个列表视图项时显示动态模型内容?