R语言 如何按组获取最大计数

ih99xse1  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(208)

使用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)

有什么建议吗?

gmxoilav

gmxoilav1#

如果你想要更少的步骤,你可以尝试用base R table()来得到向量中的计数,然后用max()。默认情况下,它只返回一次最大值,即使它在向量中出现了几次。
第一个
或者你想让它像宇宙一样整齐

df$id %>% 
  table() %>% 
  max()
5f0d552i

5f0d552i2#

如果需要按组列出的最大事件数(其中id是分组变量),则:

df %>% 
  group_by(id) %>% 
  summarise(max_n_events = max(event))

如果你基本上不考虑event列中的具体值,而只考虑id列,那么上面@Josh提出的解决方案也可以写成:

df %>% group_by(id) %>% count() %>% ungroup() %>% summarise(max(n))

相关问题