gpt4 book ai didi

r - ddply -> dplyr : . fun = 用几行总结

转载 作者:行者123 更新时间:2023-12-03 18:28:18 25 4
gpt4 key购买 nike

这是 this question 的一些后续。我想使用 dplyr 函数而不是 ddply 来应用产生直接包含在结果中的几行的函数。我想这在下面的例子中得到了最好的解释:

library(plyr)
#library(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)
)

p <- c(.2,.4,.6,.8)
ddply(dfx, .(group), .fun = summarize, p=p, stats=quantile(age,probs=p))
# dfx %>% group_by(group) %>% do(p=p, stats=quantile(.$age, probs=p))

ddply 解决方案如下所示(不要加载 dplyr 使其工作):
#    group   p    stats
# 1 A 0.2 32.81104
# 2 A 0.4 34.13195
# 3 A 0.6 37.34055
# 4 A 0.8 44.21874
# 5 B 0.2 25.58858
# 6 B 0.4 34.67511
# 7 B 0.6 40.68370
# 8 B 0.8 44.67346
# 9 C 0.2 37.22625
# 10 C 0.4 42.46769
# 11 C 0.6 43.27065
# 12 C 0.8 44.54724
dplyr 解决方案(注释行)产生以下结果:
#   group        p    stats
# 1 A <dbl[4]> <dbl[4]>
# 2 B <dbl[4]> <dbl[4]>
# 3 C <dbl[4]> <dbl[4]>

在这里,数据“隐藏”在列表元素中。有没有办法直接得到上面的 ddply解决方案?
(请注意,我在 manipulatr mailing list 上发布了这个问题,到目前为止还没有答案。)

最佳答案

检查这是否有效:
由于 no set.seed 输出不同

 dfx %>% group_by(group) %>% do(data.frame(p=p, stats=quantile(.$age, probs=p)))
Source: local data frame [12 x 3]
Groups: group

group p stats
1 A 0.2 27.68069
2 A 0.4 35.36915
3 A 0.6 39.15223
4 A 0.8 46.41073
5 B 0.2 34.68378
6 B 0.4 37.22358
7 B 0.6 40.76185
8 B 0.8 44.48645
9 C 0.2 33.86023
10 C 0.4 36.30515
11 C 0.6 46.80672
12 C 0.8 52.82140

关于r - ddply -> dplyr : . fun = 用几行总结,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24405239/

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