我想知道为什么只改变汇总统计的顺序(mean
和sd
)会导致不同的输出。这一点在dplyr
R包的summarize
文档中也提到过。
mtcars %>%
group_by(cyl) %>%
summarise(disp = mean(disp), sd = sd(disp))
sd
返回为NA。
mtcars %>%
group_by(cyl) %>%
summarise(sd = sd(disp), disp = mean(disp))
sd
和mean
都正确返回。
1条答案
按热度按时间ztyzrc3y1#
在第一个版本中,
disp
的值随着mean(disp)
而变化,我们采用的就是这个值sd
。由于我们是按组进行的,并且组中只有一个数字作为平均值,因此它返回NA
作为标准差。让我们来分析一下第一个例子--
现在,
cyl = 4
的disp
的mean
是105.1364。该值存储在disp
中。现在,您将获取相同值的sd
,即这也扩展到了所有其他群体。
一个快速解决方法是更改存储平均值的变量名。
第二种情况不会遇到这个问题,因为
sd
值保存在变量sd
中,disp
值保持不变。