2017-06-30 11 views
-1

多くの列のデータフレームから、列のそれぞれを指定せずに、何百もの列を単一の列で集計したい名前。複数の列が1列に集約されたデータフレーム

いくつかのサンプルデータ:

`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')` 

オリジナルデータセットがたくさん大きいので、私は集約されると、私は、リスト機能を使用することはできません各列の名前を指定することはできません。

ありがとうございました!

+0

なぜ 'as.list'ですか? 'list'を使うだけです。 – Masoud

答えて

0

わずかにあなたのコードを変更:

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

もちろんベースRは、私が好きなものの場合には、誰かが望んでいる:

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

+0

その作品!本当にありがとう! –

0

は、あなたが実際にそれらすべてをリストする必要はありませんdplyr

library(dplyr) 
data.frame(sample) %>% 
      group_by(names) %>% 
      summarise_each(funs(sum)) 
関連する問題