列表列表中元素的均值

sta*_*man 5 r list vector mean

我有一个列表列表,其中每个列表都包含代码(名称)及其值。这些代码对于每个列表都保持不变,但值不同。现在,我想看看这些股票代码的平均值是多少。问题是我不知道如何指定查看每个列表中的特定代码并提取值。例如,我想要这 3 个列表中“jpm”的平均值。这将是mean(c(0.08620690,0.10000000,0.10000000))= 0.095402。我怎么能这样做?

到目前为止我所拥有的:

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
))

degree.unl <- unlist(degree.l)
Run Code Online (Sandbox Code Playgroud)

akr*_*run 3

我们可以使用aggregateinstackbase R

aggregate(values ~ ind, do.call(rbind, lapply(degree.l, stack)), FUN = mean)
Run Code Online (Sandbox Code Playgroud)

-输出

  ind     values
1  schwab 0.01984127
2     pnc 0.05197044
3     jpm 0.09540230
4    amex 0.09064039
5      gs 0.09718117
6      ms 0.09480022
7    bofa 0.11067323
8    citi 0.11305419
9      wf 0.11165846
10   spgl 0.09657909
11    brk 0.11819923
Run Code Online (Sandbox Code Playgroud)

或者另一种选择是Reduce(假设没有 NA)进行元素加法 ( +) 并除以lengthlist

 Reduce(`+`, degree.l)/length(degree.l)
    schwab        pnc        jpm       amex         gs         ms       bofa       citi         wf       spgl        brk 
0.01984127 0.05197044 0.07476738 0.08508484 0.09638752 0.09638752 0.10114943 0.10114943 0.11721401 0.11721401 0.13883415 
Run Code Online (Sandbox Code Playgroud)

或者作为OPunlist编辑数据集,然后使用该对象,按分组names并使用tapply

tapply(degree.unl, names(degree.unl), FUN = mean)
      amex       bofa        brk       citi         gs        jpm         ms        pnc     schwab       spgl         wf 
0.09064039 0.11067323 0.11819923 0.11305419 0.09718117 0.09540230 0.09480022 0.05197044 0.01984127 0.09657909 0.11165846 
Run Code Online (Sandbox Code Playgroud)