在名单列表中出现的频率 [英] Frequency of appearance in list of lists

查看:0
本文介绍了在名单列表中出现的频率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个列表列表,其中每个列表都进行了排序。我想要研究的是某个元素在特定位置出现了多少次。例如,&PNC&曾两次出现在第二位,一次出现在第三位。我的数据结构如下:

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

推荐答案

我们可以使用sapply循环list,获取matchmatch作为‘pnc’的位置索引,并在输出vector上获得table-返回‘pnc’的位置频率

get_positions <- function(lst1, to_match) {
   table(sapply(lst1, function(x) match(to_match, names(x))))
}

-测试

get_positions(degree.l, 'pnc')
2 3 
2 1 

如果要对所有unique名称执行此操作

nm1 <- unique(names(unlist(degree.l)))
out <- lapply(nm1, get_positions, lst1 = degree.l)
names(out) <- nm1

-输出

out
$schwab

1 
3 

$pnc

2 3 
2 1 

$jpm

3 5 7 
1 1 1 

$amex

4 5 8 
1 1 1 

$gs

2 5 9 
1 1 1 

$ms

3 6 9 
1 1 1 

$bofa

 6  7 11 
 1  1  1 

$citi

 4  8 11 
 1  1  1 

$wf

 7  9 10 
 1  1  1 

$spgl

 4  6 10 
 1  1  1 

$brk

 8 10 11 
 1  1  1 

这篇关于在名单列表中出现的频率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆