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)
我们可以使用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)