在R中如何按分组提取对应列出现频次最高的条目
R按指定列分组后提取其他列最高频条目的实现方法
基于你现有代码的后续补全方案
你已经完成了分组计数的步骤,后续只需要对计数结果按频次排序,每组取最高频的条目即可,完整代码如下:
library(dplyr) df %>% group_by(Name) %>% count(City, name = "freq") %>% # 统计每个Name下各City的出现次数 arrange(desc(freq)) %>% # 按频次降序排序 slice(1) %>% # 提取每组的第一行,即频次最高的条目 ungroup() %>% # 按需选择是否取消分组结构 select(-freq) # 按需选择是否删除计数列,最终保留Name和最高频City两列
如果存在同个Name下多个City频次相同的平局场景,需要返回所有并列最高的条目,可将slice(1)替换为filter(freq == max(freq))。
更简洁的一步到位写法
无需单独先做计数,可以直接在分组汇总时计算最高频City:
library(dplyr) df %>% group_by(Name) %>% summarise(City = names(which.max(table(City))))
两种写法运行你的示例数据集,都会得到你需要的输出结果:
| Name | City |
|---|---|
| A | New York |
| B | Chicago |
内容的提问来源于stack exchange,提问作者dlwhch
相关产品推荐
相关产品推荐

