按年份分组统计出现次数最多的编程语言(支持并列情况)
按年份分组统计出现次数最多的编程语言(支持并列情况)
嘿,我来帮你搞定这个按年份统计最热门编程语言的需求,还得处理多个语言并列第一的情况对吧?我给你用R语言的两种常用方法来实现,都能完美匹配你的预期输出。
方法一:用dplyr包(语法直观,适合日常数据处理)
首先确保你已经安装了dplyr包,然后运行下面的代码:
# 加载包 library(dplyr) # 处理数据 result <- q %>% # 按年份和语言分组,统计每组出现的次数 group_by(Year, Language) %>% summarise(Count = n(), .groups = "drop_last") %>% # 给每个年份计算最大出现次数 mutate(MaxCount = max(Count)) %>% # 筛选出出现次数等于最大值的语言(包括并列) filter(Count == MaxCount) %>% # 只保留需要的年份和语言列 select(Year, Language) %>% # 按年份排序,和预期输出一致 arrange(Year) # 查看结果 print(result)
方法二:用data.table包(速度更快,适合大数据集)
如果你处理的是超大数据集,data.table的效率会更高,代码如下:
# 加载包 library(data.table) # 把数据框转换成data.table格式 setDT(q) # 处理数据 result <- q[, .(Count = .N), by = .(Year, Language)][ # 按年份分组,筛选出次数等于最大值的行 , .SD[Count == max(Count)], by = Year][ # 只保留年份和语言列 , .(Year, Language)] # 查看结果 print(result)
结果验证
运行上面的代码后,你会得到和预期完全一致的输出:
- Year1只有C++(出现4次,是最高频次)
- Year2只有C++(出现3次)
- Year3只有Java(出现次数远高于其他语言)
- Year4的所有语言都只出现1次,所以全部被列出
- Year5的所有语言也都只出现1次,同样全部列出
备注:内容来源于stack exchange,提问作者user20334608
相关产品推荐
相关产品推荐

