2016-03-29 30 views
1

Veri çerçevesindeki birden çok satırdaki verileri bir listeye (veya benzer yapıya) dönüştürmeye çalışıyorum., veri çerçevesindeki birden fazla satırı toplayacak şekilde

Benim veri şöyle görünür:

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 

ve aradığım sonucu böyle bir şeydir: Ben dataframe tüm satırlarını üzerinde döngü ile bu verimsiz yapabilirsiniz

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

ve bireysel listelere eklemek, ancak bunu yapmak için daha iyi bir yol olup olmadığını görmek istedim (şu anda data.table paketini inceliyorum ve bunun için bir çözüm içerdiğine inanıyorum, ama henüz bulamadım)

Yardımlarınız için teşekkürler!

+0

bazı örnekler için https://stackoverflow.com/questions/35600416/ (Bkz toStringpaste(..., collapse=", ") için bir sarıcı) –

+0

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

cevap

0

Biz aggregate

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

Ya data.table ile kullanabileceğiniz, biz 'a' 'b', paste elemanları tarafından gruplandırılmış (setDT(df)) 'data.table' için 'data.frame' dönüştürmek birlikte

library(data.table) 
setDT(df)[, list(b= toString(b)), a]  
İlgili konular