使用tidyverse,我想按组获得事件(例如日期)的最大计数。下面是一个最小可重现的示例:
数据框:
df <- data.frame(id = c(1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 5, 5, 5, 5),
event = c(12, 6, 1, 7, 13, 9, 4, 8, 2, 5, 11, 3, 10, 14))
以下代码生成所需的输出,但似乎过于复杂:
df %>%
group_by(id) %>%
mutate(count = n()) %>%
ungroup() %>%
select(count) %>%
slice_max(count, n = 1, with_ties = FALSE)
是否有更简单/更好的方法?下面的方法可以工作,但top_n
已被slice_max
取代,而使用后者的是recommended。
df %>%
count(id) %>%
distinct(n) %>% # to remove tied values
top_n(1)
有什么建议吗?
2条答案
按热度按时间gmxoilav1#
如果你想要更少的步骤,你可以尝试用base R
table()
来得到向量中的计数,然后用max()
。默认情况下,它只返回一次最大值,即使它在向量中出现了几次。第一个
或者你想让它像宇宙一样整齐
5f0d552i2#
如果需要按组列出的最大事件数(其中
id
是分组变量),则:如果你基本上不考虑
event
列中的具体值,而只考虑id
列,那么上面@Josh提出的解决方案也可以写成: