gpt4 book ai didi

r - 为什么当我在`dplyr`之后加载`plyr`时,总结或变异不能与group_by一起使用?

转载 作者:行者123 更新时间:2023-12-03 13:56:17 26 4
gpt4 key购买 nike

注意:已编辑此问题的标题,以使它成为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


我究竟做错了什么?

最佳答案

这里的问题是您先加载dplyr,然后再加载plyr,所以plyr的函数summarise掩盖了dplyr的函数summarise。发生这种情况时,您会收到以下警告:

require(plyr)
Loading required package: plyr
------------------------------------------------------------------------------------------
You have loaded plyr after dplyr - this is likely to cause problems.
If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
library(plyr); library(dplyr)
------------------------------------------------------------------------------------------

Attaching package: ‘plyr’

The following objects are masked from ‘package:dplyr’:

arrange, desc, failwith, id, mutate, summarise, summarize


因此,为了使您的代码正常工作,请分离plyr detach(package:plyr)或重新启动R并先加载plyr,然后再加载dplyr(或仅加载dplyr):

library(dplyr)
dfx %>% group_by(group, sex) %>%
summarise(mean = round(mean(age), 2), sd = round(sd(age), 2))
Source: local data frame [6 x 4]
Groups: group

group sex mean sd
1 A F 41.51 8.24
2 A M 32.23 11.85
3 B F 38.79 11.93
4 B M 31.00 7.92
5 C F 24.97 7.46
6 C M 36.17 9.11


或者,您可以在代码中显式调用dplyr的summary,因此无论您如何加载软件包,都将调用正确的函数:

dfx %>% group_by(group, sex) %>% 
dplyr::summarise(mean = round(mean(age), 2), sd = round(sd(age), 2))

关于r - 为什么当我在`dplyr`之后加载`plyr`时,总结或变异不能与group_by一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26106146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com