gpt4 book ai didi

r - ddply 和聚合之间的区别

转载 作者:行者123 更新时间:2023-12-04 09:04:19 25 4
gpt4 key购买 nike

有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别:

一个数据框:

mydat <- data.frame(first = rpois(10,10), second = rpois(10,10), 
third = rpois(10,10), group = c(rep("a",5),rep("b",5)))

使用聚合将函数应用于按因子分割的数据帧的一部分:
aggregate(mydat[,1:3], by=list(mydat$group), mean)
Group.1 first second third
1 a 8.8 8.8 10.2
2 b 6.8 9.4 13.4

尝试将聚合用于另一个函数(返回错误消息):
aggregate(mydat[,1:3], by=list(mydat$group), function(u) cor(u$first,u$second))
Error in u$second : $ operator is invalid for atomic vectors

现在,尝试使用 ddply(plyr 包)执行相同操作:
ddply(mydat, .(group), function(u) cor(u$first,u$second))
group V1
1 a -0.5083042
2 b -0.6329968

高度赞赏所有提示、链接、批评。

最佳答案

aggregate独立地在每一列上调用 FUN,这就是为什么你得到独立的手段。 ddply将所有列传递给函数。快速演示 aggregate 中传递的内容可能是为了:

一些用于演示的示例数据:

d <- data.frame(a=1:4, b=5:8, c=c(1,1,2,2))

> d
a b c
1 1 5 1
2 2 6 1
3 3 7 2
4 4 8 2

通过使用函数 print并忽略命令的结果 aggregateddply ,我们可以看到在每次迭代中传递给函数的内容。
aggregate :
tmp <- aggregate(d[1:2], by=list(d$c), print)
[1] 1 2
[1] 3 4
[1] 5 6
[1] 7 8

请注意,将发送单独的列进行打印。
ddply :
tmp <- ddply(d, .(c), print)
a b c
1 1 5 1
2 2 6 1
a b c
3 3 7 2
4 4 8 2

请注意,正在发送数据帧以进行打印。

关于r - ddply 和聚合之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14176756/

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