2017-02-25 8 views
-1

Hallo Ich habe versucht, die Antwort auf Stackoverflow zu finden, aber ich habe es versäumt. Es gibt viele ähnliche Fragen, aber mein Punkt ist anders.So wandeln Sie eindeutige Zeilenwerte in Spaltennamen um (gab 0 Werte in NA-Positionen an)

Hier ist mein Problem: - ich eindeutige Werte von einer Spalte (IAB_category) und erstellen Sie Datenrahmen nehmen will mit Spaltennamen IAB_category

> df 
     userID IAB_category suma 
1: 0004837def   art 3 
2: 0004837def   aut 5 
3: 0004837def   bus 5 
4: 0004837def   fin 4 
5: 0004837def   hob 1       

405479: ffffa375db   tra 31 
405480: ffffa942e3   bus 6 
405481: ffffa942e3   fin 12 
405482: ffffa942e3   new 2 

Grundsätzlich bilden mag ich diesen Datenrahmen erhalten für alle Benutzer (und suma in Fall gesetzt, wenn der Benutzer x einen Wert oder 0 hat, wenn tut Benutzer x nicht hat Wertsumme (‚Tee‘ wird 0 und ‚neue‘ wird 0 als gut sein.)

userID  art aut bus fin hob tra new 
0004837def  3 3 5 4 1 0 0 

Antwort

1

Es klingt, als ob Sie Ihre Daten von einer langen Form in eine breite Form bringen möchten. Der einfachste Weg, dies zu tun ist mit dem Tidyr-Paket:

library(tidyr) 

# Convert the dataset to wide 
newdf <- spread(df, key=IAB_category, value=suma) 
# Replace missing with 0 
newdf <- 
    lapply(newdf, function(x) { 
        x[is.na(x)] <- 0 
        x 
       }) 
Verwandte Themen