语法R关于ddply

问题描述:

任何人都可以解释为什么会有一段时间在playerID在下面的R语句之前?语法R关于ddply

dataframe.AB<-ddply(Batting, .(playerID), summarize, Career.AB=sum(AB, na.rm=TRUE)) 

我见过的参数传递的东西与C(...)函数...不知道是怎么回事。我应该提及playerIDBatting数据框中的一个变量。

谢谢。

+1

我把这个评论,因为它不直接回答你的问题,但我预计dplyr超出plyr这样的目的(由于速度,主要)。在dplyr中,这会写成Batting%。%group_by(playerId)%。%summarize(Career.AB = sum(AB,na.rm = TRUE))。 – Rguy

+2

帮助(“。”)也是相关的。 – Roland

如果您想使用表达式,例如.(playerID + 1),这只是非常必要的。 .(函数告诉ddply捕获和评估数据上下文中的表达式(在您的案例中为Batting)。如果您只想按未修改的列进行分组,则可以将该列的名称作为字符向量传递(例如"playerID"c("playerID", "someOtherColumnName")以按多列分组)。要在plyr(P6-7)扩大对我的评论,从Hadley's vignette

当一个数据帧进行操作,通常要它基于对数据集中的变量组合分成不同的小组。对于d * ply,您指定要使用哪些变量(或变量的函数)。这些变量以特殊方式指定,以突出显示它们首先从数据框计算出来,然后是全局环境(在这种情况下,您有责任确保它们的长度等于数据帧中的行数)。

。(var1)将数据帧分成由var1变量的值定义的组。如果使用多个变量,。(a,b,c),则组将通过变量的相互作用形成,并且输出将被标记为全部三个变量...

也可以使用变量:。(round(a)),。(a * b)。输出到数据框时,可能会生成丑陋的名称(由make.names()生成),但您可以通过在调用中指定名称来覆盖它们:。(product = a * b)。或者,您可以使用两种更熟悉的方式来描述分割: 作为列名称的字符向量:c(“var1”,“var2”)。