【发布时间】:2020-08-08 08:36:46
【问题描述】:
在 data.frame 中,我想添加两个值,它们是该月先前值的平均值。
df <- data.frame (
Year = c(rep (2009,12), rep (2010,12), rep (2011,8)),
Month = c (1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8),
E = c(18446, 15186, 11906, 6020, 4375, 3403, 3443, 2857, 3387, 10030, 9915, 15742, 21178, 14295, 12019, 6999, 5286, 3678, 2896, 3097, 3691, 9762, 10797, 19898, 15876, 15360, 11570, 6523, 4902, 3174, NA, NA)
)
我尝试过这样的解决方案。当我们用一个数字代替破折号时,我得到了结果,但是这个解决方案无效。
df <- df %>%
mutate (
E1 = ifelse(is.na(E), mean (.[.$Month == ____ , "E"], na.rm = T), NA)
)
预期输出
Year Month E E1
2009 1 18446 NA
...
2011 6 3174 NA
2011 7 NA 3169.5
2011 8 NA 2977
3169.5 是平均值(3443, 2896)
2977 是平均值 (2857, 3097)
【问题讨论】:
-
给定您的输入数据,您的预期输出是什么?