【发布时间】:2020-09-21 08:11:55
【问题描述】:
我正在为一个大型数据集创建条件平均值,该数据集涉及几年内一周内出现的流感病例数。数据组织如下:
我想做的是创建一个新列,将前几年同一周的平均病例数制成表格。例如,对于 Week.Number 为 1 且 Flu.Year 为 2017 的行,我希望新行给出 Week.Number==1 & Flu.Year
mutate(average = case_when(
Flu.Year==2016 ~ mean(chcc$count[chcc$Flu.Year==2016]),
Flu.Year==2017 ~ mean(chcc$count[chcc$Flu.Year==2017]),
Flu.Year==2018 ~ mean(chcc$count[chcc$Flu.Year==2018]),
Flu.Year==2019 ~ mean(chcc$count[chcc$Flu.Year==2019]),
),
但是,由于有 4 年的数据 * 52 周,因此需要大量迭代才能阐明条件。有没有办法在 dplyr 中优雅地编码?我一直遇到的问题是我想根据 Week.Number 和 Flu.Year 的当前值在其他行中根据 Week.Number 和 Flu.Year 值调用计数列中的值,我不知道如何做到这一点。如果我可以提供更多信息/详细信息,请告诉我。
谢谢, 史蒂文
dat <- tibble( Flu.Year = rep(2016:2019,each = 52), Week.Number = rep(1:52,4), count = sample(1000, size=52*4, replace=TRUE) )
【问题讨论】:
-
请不要发布代码/数据/错误的图像:它不能被复制或搜索 (SEO),它会破坏屏幕阅读器,并且它可能不适合某些移动设备。参考:meta.stackoverflow.com/a/285557(和xkcd.com/2116)。请直接包含代码、控制台输出或数据(例如,
dput(head(x))或data.frame(...))。 -
这里有一些很好的参考资料,可以提供一个独立的、可重复的问题:stackoverflow.com/q/5963269、minimal reproducible example 和 stackoverflow.com/tags/r/info。
标签: r dplyr conditional-statements