You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中嵌套列表基于显著差异的排序及元素位置频次统计方案

实现步骤与代码

1. 需求核心逻辑

  • 解决相同数值的并列排名问题,避免相同值被分配不同排名
  • 跨所有子列表统计元素在各排名位置的出现频次
  • 兼容不同子列表元素长度不一致的场景

2. 完整实现代码

2.1 数据定义

degree.l <- list(c(schwab = 0, pnc = 0.0344827586206897, jpm = 0.0862068965517241, 
                   amex = 0.0862068965517241, gs = 0.103448275862069, ms = 0.103448275862069, 
                   bofa = 0.103448275862069, citi = 0.103448275862069, wf = 0.120689655172414, 
                   spgl = 0.120689655172414, brk = 0.137931034482759), 
                 c(schwab = 0.0166666666666667, pnc = 0.05, ms = 0.0666666666666667, 
                   spgl = 0.0833333333333333, jpm = 0.1, bofa = 0.1, wf = 0.1, amex = 0.1, 
                   gs = 0.116666666666667, brk = 0.116666666666667, citi = 0.15), 
                 c(schwab = 0.0428571428571429, gs = 0.0714285714285714, pnc = 0.0714285714285714, 
                   citi = 0.0857142857142857, amex = 0.0857142857142857, spgl = 0.0857142857142857, 
                   jpm = 0.1, brk = 0.1, ms = 0.114285714285714, wf = 0.114285714285714, 
                   bofa = 0.128571428571429))

2.2 并列排名计算与频次统计

# 为每个子列表生成符合并列规则的排名,ties.method可根据需求调整
rank_list <- lapply(degree.l, function(x) {
  rk <- rank(x, ties.method = "min")
  sorted_rk <- sort(rk)
  data.frame(element = names(sorted_rk), rank = unname(sorted_rk))
})

# 合并所有子列表的排名结果
all_rank_data <- do.call(rbind, rank_list)

# 生成元素-排名出现频次统计表
rank_freq <- table(element = all_rank_data$element, rank = all_rank_data$rank)

2.3 可选:优化展示效果

# 转为结构化数据框,过滤空值并增加占比统计
freq_df <- as.data.frame(rank_freq, responseName = "appear_count")
freq_df <- freq_df[freq_df$appear_count > 0, ]
# 按元素和排名排序
freq_df <- freq_df[order(freq_df$element, freq_df$rank), ]
# 计算每个元素各排名的占比
freq_df$appear_pct <- ave(freq_df$appear_count, freq_df$element, FUN = function(x) round(x/sum(x)*100, 2))

3. 关键参数说明

rank()函数的ties.method参数可按需选择并列处理逻辑:

  • min:相同值统一取最小排名,示例中4个相同的元素(gs、ms、bofa、citi)排名均为5,下一个不同值排名为9
  • max:相同值统一取最大排名,上述4个元素排名均为8,下一个不同值排名为9
  • average:相同值取平均排名,上述4个元素排名均为6.5

该实现自动兼容不同子列表元素长度不一致的场景,统计结果无遗漏。

内容的提问来源于stack exchange,提问作者statwoman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 19:09:00