我正在学习R,不懂下面的一段函数。在下面的函数中,count=length(address)到底在做什么?还有别的办法吗?
crime_dat = ddply(crime, .(lat, lon), summarise, count = length(address))发布于 2014-09-10 01:20:46
plyr库有两个非常常见的“助手”函数,summarize和mutate。
当您想要丢弃不相关的数据/列时,只保留分组变量的级别以及这些组的特定和汇总函数(在您的示例中是length),就会使用汇总。
Mutate用于添加列(类似于基R中的transform ),但不丢弃任何内容。如果您运行这两个命令,它们应该很好地说明两者之间的区别。
library(plyr)
ddply(mtcars, .(cyl), summarise, count = length(mpg))
ddply(mtcars, .(cyl), mutate, count = length(mpg))在这个例子中,就像在您的示例中一样,目标是计算出每个组中有多少行。在将ddply与summarise一起使用时,我们需要选择一个以单个列(向量)作为参数的函数,因此length是一个不错的选择。因为我们只是在数行/取向量的长度,所以我们传递给它的列并不重要。或者,我们可以使用nrow,但是为此我们必须传递一个完整的data.frame,这样summarise就不能工作了。在这种情况下,它可以帮助我们输入:
ddply(mtcars, .(cyl), nrow)但是如果我们想做的更多,总结真的很精彩。
ddply(mtcars, .(cyl), summarise, count = length(mpg),
mean_mpg = mean(mpg), mean_disp = mean(disp))还有别的办法吗?
是的,还有很多其他的方法。
我再次建议亚历克斯将dplyr用于类似的事情。summarize和mutate概念仍然被使用,但工作速度更快,代码可读性更强。
其他选项包括data.table包(也是一个很好的选项)、基本R中的tapply()或aggregate()以及无数其他可能性。
https://stackoverflow.com/questions/25755722
复制相似问题