2012-09-06 16 views
5

Attualmente sto usando ddply. È molto facile gestire i numeri. Ad esempio, prendere la media o la deviazione standard del sottogruppo.ddply riepilogo operazione stringa

Ma ho difficoltà a gestire le stringhe. Mi piacerebbe combinare le stringhe nella stessa colonna in ogni sottogruppo, ma non potrei farlo. Ho provato cbindpaste, ecc. Chiunque può offrire un aiuto?

+2

Senza un esempio concreto e riproducibile, no, probabilmente non possiamo offrire molto aiuto. – joran

+0

Si prega di produrre un [esempio riproducibile] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) per ottenere aiuto ... – ptocquin

risposta

8

Aggiungi collapse="" alla vostra dichiarazione pasta

ddply(mtcars, .(carb), summarize, cyl_concatenated = paste(cyl, collapse = "")) 
# carb cyl_concatenated 
#1 1   4664444 
#2 2  8444888444 
#3 3    888 
#4 4  6686688888 
#5 6    6 
#6 8    8 
5

vedo Dason ha un approccio. Avrei preferito mantiene cose separate separato e suggerirei:

ddply(mtcars, .(carb), summarize, cyl_list = list(as.character(cyl))) 
#----------- 
    carb      cyl_list 
1 1   4, 6, 6, 4, 4, 4, 4 
2 2 8, 4, 4, 4, 8, 8, 8, 4, 4, 4 
3 3      8, 8, 8 
4 4 6, 6, 8, 6, 6, 8, 8, 8, 8, 8 
5 6       6 
6 8       8 

Si potrebbe anche modificare Dason di usare il collasso = "", che avrebbe lo stesso aspetto come sopra, ma dovrebbe avere una struttura diversa. Con list() è necessario convertire in carattere quando si utilizza tale esempio, oppure si ottiene la codifica intera della variabile fattore.