R一步汇总数据帧总和和计数

时间:2016-05-27 10:46:13

标签: r dataframe count aggregate

我想知道是否有办法一步完成以下任务。

我有两列,一列的字符不是唯一的,另一列是数字。

我做了:

sum<-(aggregate(x=df$numbers, by=list(df$char), FUN=sum)
sum$char <- sum$Group.1
sum$Group.1 <- NULL
df <- setDT(df)[, .N, char]
df <- merge(df,sum,by="char")

想知道是否会有其他方式,例如使用cast这样简单但只需一步。

1 个答案:

答案 0 :(得分:2)

如果我们需要在原始数据集中创建两个新列,请使用:=将输出分配给&#39; char&#39;在data.table

library(data.table)
setDT(df)[, c("Sum", "Count") := list(sum(Numbers), .N) , by = char]

但是,如果我们只需要一个汇总的输出

setDT(df)[, .(Sum = sum(Numbers), Count = .N), by = char]