gpt4 book ai didi

r - 了解 plyr 的 ddply 函数

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

我正在学习 R,但不理解以下函数的一部分。在下面的函数中 count=length(address) 到底在做什么?有没有其他方法可以做到这一点?

crime_dat = ddply(crime, .(lat, lon), summarise, count = length(address))

最佳答案

plyr 库有两个非常常见的“帮助”函数,summarizemutate

当您想要丢弃不相关的数据/列时使用汇总,仅保留分组变量的级别以及这些组的特定和汇总函数(在您的示例中,length )。

Mutate 用于添加一列(类似于基础 R 中的 transform),但不会丢弃任何内容。如果您运行这两个命令,它们应该可以很好地说明差异。

library(plyr)
ddply(mtcars, .(cyl), summarise, count = length(mpg))
ddply(mtcars, .(cyl), mutate, count = length(mpg))

在此示例中,与您的示例一样,目标是确定每个组中有多少行。当像这样使用 ddplysummarise 时,我们需要选择一个将单列(向量)作为参数的函数,所以 length 是一个不错的选择。由于我们只是计算行数/获取向量的长度,所以我们传递给它的 并不重要。或者,我们可以使用 nrow,但为此我们必须传递整个 data.frame,因此 summarise 不起作用。在这种情况下,它可以节省我们的输入:

ddply(mtcars, .(cyl), nrow)

但如果我们想做更多,总结真的很出色

ddply(mtcars, .(cyl), summarise, count = length(mpg),
mean_mpg = mean(mpg), mean_disp = mean(disp))

Is there another way to do this?

是的,还有很多其他方式。

我赞同 Alex 的建议,即使用 dplyr 来处理此类事情。 summarizemutate 概念仍在使用,但它的工作速度更快,代码可读性更高。

其他选项包括 data.table 包(也是一个不错的选择),tapply()aggregate() 在 base R 中,以及无数其他可能性。

关于r - 了解 plyr 的 ddply 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755722/

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