注意:此问题的 Headers 已经过编辑,以便在 plyr
函数掩盖其 dplyr
对应项时将其作为问题的规范问题 . 问题的其余部分保持不变 .
假设我有以下数据:
dfx <- data.frame(
group = c(rep('A', 8), rep('B', 15), rep('C', 6)),
sex = sample(c("M", "F"), size = 29, replace = TRUE),
age = runif(n = 29, min = 18, max = 54)
)
有了旧的 plyr
,我可以使用以下代码创建一个总结我的数据的小表:
require(plyr)
ddply(dfx, .(group, sex), summarize,
mean = round(mean(age), 2),
sd = round(sd(age), 2))
输出看起来像这样:
group sex mean sd
1 A F 49.68 5.68
2 A M 32.21 6.27
3 B F 31.87 9.80
4 B M 37.54 9.73
5 C F 40.61 15.21
6 C M 36.33 11.33
我正在尝试将代码移动到 dplyr
和 %>%
运算符 . 我的代码采用DF然后按组和性别对其进行分组,然后对其进行汇总 . 那是:
dfx %>% group_by(group, sex) %>%
summarise(mean = round(mean(age), 2), sd = round(sd(age), 2))
但我的输出是:
mean sd
1 35.56 9.92
我究竟做错了什么?
2 回答
这里的问题是你首先加载dplyr然后plyr,所以plyr的函数
summarise
掩盖了dplyr的函数summarise
. 当发生这种情况时,您会收到此警告因此,为了使代码正常工作,请先拆分plyr
detach(package:plyr)
或重新启动R并首先加载plyr然后再加载dplyr(或仅加载dplyr):或者您可以在代码中显式调用dplyr的汇总,因此无论您如何加载包,都将调用正确的函数:
由于您已加载"plyr"和"dplyr"的顺序,您的代码正在调用
plyr::summarise
而不是dplyr::summarise
.演示: