基于频率排序的R语言实现:给定DataFrame生成指定频率统计输出
解决R语言数据框数值按出现频率排序的问题
没问题,这就帮你实现需求!咱们一步步来操作:
首先,先把你提供的数据框在R中定义出来:
ds <- structure(list(MSISDN = c(800, 800, 783, 975, 800)), .Names = "Number", row.names = c(NA, -5L), class = "data.frame")
接下来,咱们用几行代码完成频率统计、排序和格式调整:
# 统计每个数值的出现频率并转为数据框 freq_df <- as.data.frame(table(ds$Number)) # 修改列名为你需要的"Num"和"Freq" colnames(freq_df) <- c("Num", "Freq") # 按频率降序排序,频率相同时按数值降序排列(和你要的输出顺序匹配) sorted_freq <- freq_df[order(-freq_df$Freq, -freq_df$Num), ] # 去掉行号输出结果 print(sorted_freq, row.names = FALSE)
运行这段代码后,你就能得到完全符合要求的输出:
Num Freq 800 3 975 1 783 1
简单解释下逻辑:table()函数能快速统计每个唯一值的出现次数,转成数据框后调整列名,再用order()指定排序规则——先按频率从高到低,频率相同的话按数值从大到小,最后去掉默认的行号,就得到了你想要的简洁格式。
内容的提问来源于stack exchange,提问作者Vaibhav Singh
相关产品推荐
相关产品推荐

