根据一列汇总具有许多列的数据框

时间:2017-06-30 16:31:52

标签: r dataframe aggregate

从许多列的数据框中,我想通过单个列聚合(即sum)数百列,而不指定每个列名。

一些示例数据:

names <- floor(runif(20, 1, 5))
sample <- cbind(names)

for(i in 1:20){
col <- rnorm(20,2,4)
sample <- cbind(sample, col)
}

到目前为止我所拥有的是以下代码,但它告诉我参数的长度必须相同。

aggregated <- aggregate.data.frame(sample[,c(2:20)], by = as.list(names),     FUN = 'sum')

原始数据集要大很多,所以我不能指定要聚合的每个列的名称,我也不能使用list函数。

2 个答案:

答案 0 :(得分:1)

你根本不需要列出它们:

aggregate(. ~ names, sample, sum) # . represents all other columns

当然,基地R是我的最爱,但万一有人想要dplyr

library(dplyr)
data.frame(sample) %>% 
             group_by(names) %>% 
             summarise_each(funs(sum))

答案 1 :(得分:0)

稍微改变你的代码:

<ContentPage.ToolbarItems> <ToolbarItem Order="Secondary" Icon="morevert.png" Text="Atualizar" Command="{Binding Atualizar}"/> <ToolbarItem Order="Secondary" Text="Ajuda" Command="{Binding Ajuda}"/> <ToolbarItem Order="Secondary" Text="Sair" Command="{Binding Sair}"/> </ContentPage.ToolbarItems>