[英]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.