我正在尝试使用R计算anova中的组残差。我的数据框是
df <- data.frame(V1 = c(rep("group1", 5), rep("group2", 7)),
value = c(6.6,4.6,8.5,6.1,8.4,
10.7,10.1,10.9,10.7,15.6,13.8,15.9))
我想使用dplyr
的简单方法,或者将以下两行代码组合起来
M <- df %>% group_by(V1) %>% summarise(avg = mean(value))
df$res <- ifelse(test = df$V1 == "group1", yes = (df$value - M$avg[1])^2,
no = (df$value - M$avg[2])^2)
我尝试在do()
中使用dplyr
但没有成功。我想知道是否有一种巧妙的方法。
答案 0 :(得分:3)
如果您需要继续使用原始value
列以及avg
,请使用mutate
而不是summarize
,以便将这些方法放在新列中旁边的原始值:
df %>%
group_by(V1) %>%
mutate(avg = mean(value),
res = (value - avg)^2)