均值 2 个滞后,所有级别
mean for 2 lags, all levels
我的数据框下面有 3 列。一个因子,一个观察值和列,我想在其中计算每个因子水平的两个先前观察值。
Mean_x 第 7 行的值为 5,因为 "a" 上的最后两个观察值是 7 和 3,第 4 行和第 3 行。
我看过一些 zoo 包。但它似乎只需要所有行的滞后,现在我想要在每个因素级别内的滞后 2 的平均值..
factorobservation mean_x
1 d 8 NA
2 b 11 NA
3 a 3 NA
4 a 7 NA
5 c 1 NA
6 b 7 NA
7 a 2 NA
8 a 4 NA
9 d 9 NA
10 c 8 NA
11 d 7 NA
12 c 5 NA
13 c 6 NA
14 d 9 NA
15 a 5 NA
16 a 3 NA
17 d 7 NA
18 a 3 NA
19 d 4 NA
20 c 4 NA
我认为你必须创建一个在你的因子的每个级别内运行的函数,如下所示:
f <- function(x) {
if (length(x) < 3) {
rep(NA, length(x))
} else {
c(NA, NA, sapply(3:length(x), function(i) mean(x[i-1:2])))
}
}
然后,按照其他人的建议,您可以使用 ave
将结果广播回原来的 data.frame
:
df$mean_x <- ave(df$observation, df$factor, FUN=f)
> df
factor observation mean_x
1 d 8 NA
2 b 11 NA
3 a 3 NA
4 a 7 NA
5 c 1 NA
6 b 7 NA
7 a 2 5.0
8 a 4 4.5
9 d 9 NA
10 c 8 NA
11 d 7 8.5
12 c 5 4.5
13 c 6 6.5
14 d 9 8.0
15 a 5 3.0
16 a 3 4.5
17 d 7 8.0
18 a 3 4.0
19 d 4 8.0
20 c 4 5.5
我的数据框下面有 3 列。一个因子,一个观察值和列,我想在其中计算每个因子水平的两个先前观察值。
Mean_x 第 7 行的值为 5,因为 "a" 上的最后两个观察值是 7 和 3,第 4 行和第 3 行。
我看过一些 zoo 包。但它似乎只需要所有行的滞后,现在我想要在每个因素级别内的滞后 2 的平均值..
factorobservation mean_x
1 d 8 NA
2 b 11 NA
3 a 3 NA
4 a 7 NA
5 c 1 NA
6 b 7 NA
7 a 2 NA
8 a 4 NA
9 d 9 NA
10 c 8 NA
11 d 7 NA
12 c 5 NA
13 c 6 NA
14 d 9 NA
15 a 5 NA
16 a 3 NA
17 d 7 NA
18 a 3 NA
19 d 4 NA
20 c 4 NA
我认为你必须创建一个在你的因子的每个级别内运行的函数,如下所示:
f <- function(x) {
if (length(x) < 3) {
rep(NA, length(x))
} else {
c(NA, NA, sapply(3:length(x), function(i) mean(x[i-1:2])))
}
}
然后,按照其他人的建议,您可以使用 ave
将结果广播回原来的 data.frame
:
df$mean_x <- ave(df$observation, df$factor, FUN=f)
> df
factor observation mean_x
1 d 8 NA
2 b 11 NA
3 a 3 NA
4 a 7 NA
5 c 1 NA
6 b 7 NA
7 a 2 5.0
8 a 4 4.5
9 d 9 NA
10 c 8 NA
11 d 7 8.5
12 c 5 4.5
13 c 6 6.5
14 d 9 8.0
15 a 5 3.0
16 a 3 4.5
17 d 7 8.0
18 a 3 4.0
19 d 4 8.0
20 c 4 5.5