2016-03-29 3 views
1

データフレームの複数の行のデータをリスト(または同様の構造)に変換しようとしています。リストするデータフレーム内に複数の行を集約する

私のデータは次のようになります。

data.frame("a"=c(1,1,2,3,3,3), "b"=c("x","y","x","x","y","z")) 
    a b 
1 1 x 
2 1 y 
3 2 x 
4 3 x 
5 3 y 
6 3 z 

と私が探している結果は、このようなものです:私は、データフレームのすべての行を超えるループすることにより、非効率的にこれを行うことができます

a  b 
1 1 x, y 
2 2  x 
3 3 x, y, z 

個々のリストに追加していましたが、これを実行するより良い方法があるかどうかを確認したいと思いました(私は現在data.tableパッケージを研究していますが、これには解決策が含まれていますが、まだ見つかりません)

ご協力ありがとうございます!

+0

は、いくつかの例についてはhttps://stackoverflow.com/questions/35600416/を参照してください –

+0

とhttps://stackoverflow.com/questions/15933958 –

答えて

0

我々はaggregate

aggregate(b~a, df, FUN=toString) 
# a  b 
#1 1 x, y 
#2 2  x 
#3 3 x, y, z 

またはdata.tableとを使用することができ、私たちは 'A' 'B' の、paste要素によってグループ化され、(setDT(df) ')data.table' に 'data.frame' を変換します一緒に(toStringpaste(..., collapse=", ")のラッパーです)

library(data.table) 
setDT(df)[, list(b= toString(b)), a]  
関連する問題