首页 文章

ddply聚合列名

提问于
浏览
9

我使用ddply来聚合我的数据,但没有找到一种优雅的方法来将列名分配给输出数据框 .

目前我这样做:

agg_data <- ddply(raw_data, .(id, date, classification), nrow)
names(agg_data)[4] <- "no_entries"

还有这个

agg_data <- ddply(agg_data, .(classification, date), colwise(mean, .(no_entries)) )
names(agg_data)[3] <- "avg_no_entries"

有没有更好,更优雅的方式来做到这一点?

2 回答

  • 8

    你可以使用 summarise

    agg_data <- ddply(raw_data, .(id, date, classification), summarise, "no_entries" = nrow(piece))
    

    或者你可以使用 length(<column_name>) 如果 nrow(piece) 不是't work. For instance, here'一个应该可由任何人运行的例子:

    ddply(baseball, .(year), summarise, newColumn = nrow(piece))
    

    要么

    ddply(baseball, .(year), summarise, newColumn = length(year))
    

    EDIT

    或者,正如约书亚评论,全部大写版本, NROW 为你做检查 .

  • 9

    我经常使用的通用表单是:

    ddply(raw_data, .(id, date, classification), function(x) data.frame( no_entries=nrow(x) )
    

    我几乎一直在我的 ddply 语句中使用匿名函数,所以上面的成语与匿名函数很好地融合 . 这不是表达像 nrow() 这样的函数最简洁的方法,但是我传递多个参数的函数,我非常喜欢它 .

相关问题