【发布时间】:2020-05-08 13:46:53
【问题描述】:
这似乎应该是一个简单的,但我看不到它。
假设我有一个像这样的数据框:
df <- data.frame(type=c(rep("A", 5), rep("B",5)),
stage=rep(c("1","2", "3", "4", "5"),2),
val=c(rnorm(n=5, mean=1000, sd=300),rnorm(n=4, mean=1000, sd=100), NA)
)
我希望能够用 B 组的平均值替换 type=="B" 组中的 NA,但从 B 中省略一些“vals”(例如,“stage”等于 1 或 stage 等于 2 - 或任何其他条件) .使用dplyr和zoo很容易填写组均值:
df %>% dplyr::group_by(type) %>% dplyr::mutate_at("val", zoo::na.aggregate)
但我不知道如何根据“阶段”中的条件从组中排除 val。理想情况下,包含 zoo 的 dplyr 解决方案也很好。
【问题讨论】:
-
抱歉应该补充一下,我希望所有值都保留在 df 中,只替换了 NA
-
您可以拆分数据集并将它们合并两个部分,问题是当您未用于计算平均值的部分中缺少变量时会发生什么