【发布时间】:2021-02-08 22:20:45
【问题描述】:
我有一个示例性的 data.frame,其中包含“月”和“值”两列。
我想使用当前和上个月的数据来计算每一行的平均值,而无需进行相应的观察。这意味着n-1行的平均值,其中n是当月和上月的行数。
我知道如何计算所有行的 n-1 平均值(参见“mean_k_1”列)。
仍然缺少的是n的规范,这意味着应该只考虑当前和上个月的行而不是所有行。
预期结果在“mean_lag”列中。
这是一个 MWE:
month <- as.Date(c("2020-01-01", "2020-01-01", "2020-02-01", "2020-02-01", "2020-02-01", "2020-03-01",
"2020-04-01", "2020-04-01", "2020-04-01", "2020-05-01", "2020-05-01"))
value <- c(102, 110, 98, 76, 320, 419, 215, 50, 99, 46, 129)
mean_lag <- c(110, 102, 152, 157.5, 96.5, 164.7, 189.3, 244.3, 228.0, 123.3, 102.5)
df <- cbind.data.frame(month, value, mean_lag)
n <- nrow(df)
df$mean_k_1 <- (mean(df$value)*n - df$value)/(n-1)
【问题讨论】:
标签: r mean rolling-computation