我正在使用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"
有更好,更优雅的方法吗?
答案 0 :(得分:9)
我经常使用的通用表格是:
ddply(raw_data, .(id, date, classification), function(x) data.frame( no_entries=nrow(x) )
我几乎一直在我的ddply
语句中使用匿名函数,所以上面的成语与匿名函数很好地融合。这不是表达像nrow()
这样的函数最简洁的方法,但是我传递多个参数的函数,我非常喜欢它。
答案 1 :(得分:8)
您可以使用summarise
:
agg_data <- ddply(raw_data, .(id, date, classification), summarise, "no_entries" = nrow(piece))
如果length(<column_name>)
不起作用,您可以使用nrow(piece)
。例如,这是一个应该由任何人运行的例子:
ddply(baseball, .(year), summarise, newColumn = nrow(piece))
或
ddply(baseball, .(year), summarise, newColumn = length(year))
修改强>
或者,正如Joshua评论的那样,全部大写版本NROW
会为您进行检查。