这项工作:
df %>%
group_by(exp) %>%
summarise(mean = mean(int),
l1 = n(),
ratio_mean = int[highlight] / mean)
但是你的解决方案出了什么问题?
-
nrow(.)
计算整个输入数据帧的行数,wherase
n()
每组只计算行数
-
.[.$highlight, 'int']/mean
这里再次使用Highlight列来使用整个输入数据帧和子集,但是它被正确的组平均值所除。实际上,在这里返回两个值,作为原始df的两行
highlight = TRUE
. 这会导致
NA
-列名称。
为了保存它,我们可以使用
do()
正如@mikkomarttila所建议的,但这有点笨拙:
df %>%
group_by(exp) %>%
do(summarise(., mean = mean(.$int),
l1 = nrow(.),
ratio_mean = .$int[.$highlight] / mean))
原始输出
df %>%
group_by(exp) %>%
summarise(mean=mean(int),
l1=nrow(.),
ratio_mean=.[.$highlight, 'int']/mean)