基于列表列表的显着差异排名

问题描述

我有一个列表列表,其中每个列表都经过排序。我想研究的是某个元素在特定位置出现了多少次,并考虑该值是否与前一个元素显着不同。 (例如在第一个列表中 gs、ms、bofa 和 citi 具有相同的值,但它们的排名不同)。我意识到排名的长度不会相同,因为每个列表的元素都不同。我如何才能以正确的方式执行此操作并以适当的方式显示结果?

到目前为止,我根据排序函数输出可靠地排名:

dput(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,brk = 0.1,ms = 0.114285714285714,wf = 0.114285714285714,bofa = 0.128571428571429
))

table(res <- sapply(degree.l,names),pos = row(res))

另请参阅此问题,了解根据我得到的排序对其进行可靠排名的方法

Frequency of appearance in list of lists

解决方法

我们遍历命名的 list ('degree.l'),得到 round ed 向量的等级 dense_rank,用原始向量名称 {{ 1}} 成两列 data.frame,stack rbind 元素并获得频率 list

table

-输出

table(do.call(rbind,lapply(degree.l,function(x) 
    stack(setNames(dplyr::dense_rank(round(x,3)),names(x)))))[2:1])

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...