【发布时间】:2019-11-26 14:13:51
【问题描述】:
在尝试创建包含平均值的新列时,我得到了一个奇怪的结果。我想知道是否有人可以解释结果。
这段代码说明了我的问题:
library(tidyverse)
df <- data.frame(year = c(2010, 2010, 2011, 2011, 2011),
cases = c(10:14),
disease = c("A","B","A","B","C"))
df %>%
spread(year, cases, fill = 0) %>%
mutate(average = sum(`2010`, `2011`)/2)
我得到以下结果:
为什么我的平均列满是 30 条?我在这里没有看到什么?
【问题讨论】:
-
您必须在两行之间包含
rowwise() %>%或使用mutate(average = (2010` +2011)/2)` 或先计算然后传播df %>% group_by(disease) %>% mutate(average = sum(cases)/2) %>% spread(year, cases, fill = 0) -
非常感谢@Roman - 效果很好。非常感谢。