【发布时间】:2020-12-26 19:56:09
【问题描述】:
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)
【问题讨论】:
-
top_n基于哪一列?id1还是id2?仅供参考:top_n已被取代。你应该改用slice_max -
或
slice_head你只想要每个组的第一行 -
您可以对每个组中的值进行排序,然后只取前 n