簡體   English   中英

從R中的矩陣計算加權平均值

[英]Calculate weighted mean from matrix in R

我有一個如下所示的矩陣。 對於 1:23 行,我想計算加權平均值,其中 1:23 行中的數據是權重,第 24 行是數據。

1  107 33 41 22 12 4 122 44 297 123 51 16  7  9  1  1  0
10   5  2  2  1  0 3   4  6  12   3  3  0  1  1  0  0  0
11   1  3  1  0  0 0   4  2   8   3  4  0  0  0  0  0  0
12   2  1  1  0  0 0   2  1   5   6  3  1  0  0  0  0  0
13   1  0  1  0  0 0   3  1   3   5  2  2  0  1  0  0  0
14   3  0  0  0  0 0   3  1   2   3  0  1  0  0  0  0  0
15   0  0  0  0  0 0   2  0   0   1  0  1  0  0  0  0  0
16   0  0  0  0  1 0   0  0   2   0  0  0  0  0  0  0  0
17   1  0  0  0  0 0   0  0   1   0  0  0  0  0  0  0  0
18   1  0  0  0  0 0   0  0   0   0  0  0  0  0  0  0  0
19   0  0  0  0  0 0   1  0   0   0  0  0  0  0  0  0  0
2   80 27 37  5  6 4  97 48 242 125 44 27  7  8  8  0  2
20   0  0  0  0  0 0   0  0   1   0  0  0  0  0  0  0  0
21   0  0  0  0  0 0   0  0   0   0  1  0  0  0  0  0  0
22   0  0  0  0  0 0   0  0   1   0  0  0  0  0  0  0  0
23   0  0  0  0  0 0   0  0   1   0  0  0  0  0  0  0  0
3   47 12 33 12  6 1  63 42 200  96 45 19  6  6  9  2  0
4   45 14 21  9  4 2  54 26 130  71 36 17  8  5  1  0  2
5   42 10 14  6  3 2  45 19  89  45 26  7  4  8  2  1  0
6   17  3 12  5  2 0  18 21  51  41 19 15  5  1  1  0  0
7   16  2  6  0  0 1  14  9  37  23 17  7  3  0  3  0  0
8    9  4  4  2  1 0   7  9  30  15  8  3  3  1  1  0  1
9   12  2  3  1  1 1   6  5  14  12  5  1  2  0  0  1  0
24   0  1  2  3  4 5   6  7   8   9 10 11 12 13 14 15 16

作為使用前兩行的示例,最后會有一個額外的列表示加權平均值。

1  107 33 41 22 12 4 122 44 297 123 51 16  7  9  1  1  0 6.391011
10   5  2  2  1  0 3   4  6  12   3  3  0  1  1  0  0  0 6.232558

我對編碼有點陌生,所以我不太確定該怎么做 - 任何建議都將不勝感激!

我假設您的第一列是某種索引,而不是用於加權平均值(並且數據存儲在matr_dat中):

apply(matr_dat[-nrow(matr_dat), -1], 1,
      function(row) weighted.mean(matr_dat[nrow(matr_dat), -1], row))

使用apply並將邊距設置為 1,將 apply 的第三個參數中定義的函數apply每一行數據; 要計算加權平均值,您可以使用weighted.mean並將權重設置為行的值。

你可以做:

apply(df[-nrow(df), ], 1, function(row) weighted.mean(df[nrow(df), ], row))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM