Ich habe einige schrecklich schmutzige Daten, die ich wirklich kämpfe, um zu reinigen. Ein Beispiel für das Problem ist unten:tidyr/dplyr - verteilt mehrere Variablen für doppelte IDs
ID NAME ADDRESS EMAIL PHN
1 Alice 123 Street [email protected] 5555555
1 Alice 123 Street <NA> 4444444
2 Bob 9 Circle [email protected] 1111111
3 Charlie 4 Ave [email protected] 3333333
3 Charlie 4 Ave [email protected] 3333333
3 Charlie 4 Ave <NA> NA
4 Doug 1 Court <NA> 6666666
Die gewünschte Ausgabe ist so etwas wie diese:
ID NAME ADDRESS EMAIL_1 EMAIL_2 PHN_1 PHN_2
1 Alice 123 Street [email protected] <NA> 5555555 4444444
2 Bob 9 Circle [email protected] <NA> 1111111 NA
3 Charlie 4 Ave [email protected] [email protected] 3333333 NA
4 Doug 1 Court <NA> <NA> 6666666 NA
Mit dem Verständnis, dass es eine beliebige Erweiterung der EMAIL
und PHN
Variablen sein kann (dh es könnte n Wiederholungen von ID sein, die unterschiedlichen (oder NA
) Werte haben)
Meine Lösung so weit.
df.test <- df %>%
group_by(ID) %>%
mutate(EMAILID = paste0("EMAIL_",row_number())) %>%
spread(EMAILID,EMAIL) %>%
mutate(PHONEID = paste0('PHN_',row_number())) %>%
spread(PHONEID,PHN)
Aber das erzeugt eine noch malformed data.frame:
ID NAME ADDRESS EMAIL_1 EMAIL_2 EMAIL_3 PHN_1 PHN_2 PHN_3
1 Alice 123 Street [email protected] <NA> <NA> 5555555 NA NA
1 Alice 123 Street <NA> <NA> <NA> NA 4444444 NA
2 Bob 9 Circle [email protected] <NA> <NA> 1111111 NA NA
3 Charlie 4 Ave [email protected] <NA> <NA> 3333333 NA NA
3 Charlie 4 Ave <NA> [email protected] <NA> NA 3333333 NA
3 Charlie 4 Ave <NA> <NA> <NA> NA NA NA
4 Doug 1 Court <NA> <NA> <NA> 6666666 NA NA
Hilfe? Ich vermute, dass mein Problem etwas mit dem Befehl spread()
zu tun hat, aber meine bisherigen Versuche haben sich als ziemlich fruchtlos erwiesen. Vielen Dank.
Was passiert, wenn Sie die Mutanten herausnehmen? –
@RyanMorton: wenn ich ersetzen Sie den Code mit: '' 'df.test <- df %>% group_by (ID)%>% Spread (ID, E-Mail)%>% Spread (ID, PHN)' '' Ich bekomme Fehler: Doppelte Bezeichner für Zeilen (4,5) –
Hm, könnten Sie NAME zum group_by hinzufügen? –