簡體   English   中英

計算 R 中特定行序列的平均值

[英]Compute Mean for Specific Row Sequence in R

我有以下 R 代碼:

n = 10
t = 5
N = n * t

x <- rnorm(N)

我想計算每個t觀察值的平均值。 那是:

mean(x[1:5])
mean(x[6:10])
.
.
mean(x[46:50])

相似地,

mean(x[c(1,11,21,31,41)])
mean(x[c(2,12,22,32,42)])
.
.
mean(x[c(10,20,30,40,50)])

我怎樣才能以簡單的方式做到這一點?

感謝您的幫助。

這個想法是 go 通過所有記錄sapply ,每次迭代間隔為t

sapply(seq(1, length(x), t), function(i) mean(x[i:(i + t - 1)]))

[1] -0.75555799 -0.17886981 -0.59832657  0.20791804  0.38302358
[6]  0.03449934  0.15240788 -0.17924312 -0.47540067 -0.01974705

對於你的第二個條件,我們可以做類似的事情,但seq mean為了更好地滿足你的需要。

sapply(1:n, function(i) mean(x[c(i, (seq(n, N - n, n) + i))]))

[1] -0.251136073  0.641306302 -0.137445178 -0.775326110 -0.771252712
[6] -0.255764112 -0.005568864 -0.089227014  0.415172573 -0.200055188

數據

set.seed(12)

n = 10
t = 5
N = n * t

x <- rnorm(N)
x
 [1] -1.48056759  1.57716947 -0.95674448 -0.92000525 -1.99764210
 [6] -0.27229604 -0.31534871 -0.62825524 -0.10646388  0.42801480
[11] -0.77771958 -1.29388230 -0.77956651  0.01195176 -0.15241624
[16] -0.70346425  1.18887916  0.34051227  0.50696817 -0.29330515
[21]  0.22364142  2.00720146  1.01197912 -0.30245925 -1.02524484
[26] -0.26738483 -0.19910566  0.13112260  0.14579990  0.36206472
[31]  0.67398116  2.07203577 -0.54102865 -1.07049216 -0.37245673
[36] -0.48514135  0.27478418 -0.47951256  0.79810533 -1.00445120
[41]  0.10498423 -1.15599289  0.57813463 -1.59562566 -0.30850366
[46]  0.44946592 -0.97705328  0.18999786  0.73145336 -0.49259911

使用 dplyr,創建一個分組變量,按變量分組,然后求出每組的平均值。

data.frame(x = rnorm(N), grp = rep(1:n, each = t)) %>%
    group_by(grp) %>%
    summarise(Mean = mean(x))

暫無
暫無

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

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