我需要替换那些没有数据的NA值,用同一“城市”、“时间”和“tr”下有数据的值的平均值来替代。
我提供一个可重现的示例:
输出应该是在PE T1-CN和T1-TN中,我想用T0-CN和T1-CN的平均值替换NA。
我已经检查了这篇帖子中的解决方案:Replace NA with grouped means in R? 但这不完全是我需要的。 我应该怎么做呢? 非常感谢你的帮助!
我提供一个可重现的示例:
city <- c(rep("PE", 12), rep("BN", 12), rep("CA", 12))
time <- c(rep("T0",6 ), rep("T1", 6), rep("T0",6 ), rep("T1", 6), rep("T0",6), rep("T1", 6))
tr <- c(rep("CN", 3), rep("TN", 3), rep("CN", 3), rep("TN", 3),rep("CN", 3), rep("TN", 3), rep("CN", 3), rep("TN", 3), rep("CN", 3), rep("TN", 3), rep("CN", 3), rep("TN", 3))
values<- c(20, 15,32, 16,42,56, rep(NA, 6), 23, 10,14, 41,34,56, rep(NA, 6), 23, 11,14, 21,35,46, rep(NA, 6))
df <- data.frame(city, time, tr, values)
输出应该是在PE T1-CN和T1-TN中,我想用T0-CN和T1-CN的平均值替换NA。
我已经检查了这篇帖子中的解决方案:Replace NA with grouped means in R? 但这不完全是我需要的。 我应该怎么做呢? 非常感谢你的帮助!
ifelse
,values[is.na(values)] <- ave(values[is.na(values)], ...)
会更快。 - undefined