Dies ist eher eine Code-Reinigungsübung, die ich gerade mache. Was wie meine Anfangsdaten sieht, ist dies:Mehrere Aufräumarbeiten in einer Pipeline
Year County Town ... Funding Received ... (90+ Variables total)
2016 a x Yes
2015 a y No
2014 a x Yes
2016 b z Yes
ich nicht sehen konnte, wie ich diese eine Anzahl von eingereichten und genehmigten Anträge von so bekommen konnte ich es Indikatorvariablen transformiert mit dem folgenden Code gezählt werden:
counties <- original_data %>%
select(county, funded, year) %>%
mutate(
a=ifelse(county == "a", 1,0),
b=ifelse(county == "b", 1,0),
c=ifelse(county == "c", 1,0),
... etc ...
)
und die Ausgabe sieht aus wie
County Funding Received Year binary.a binary.b
a Yes 2016 1 0
a No 2015 1 0
b No 2016 0 1
Diese Daten werden dann in zwei Datenrahmen umgewandelt wurde (vorgelegt und finanziert) eine Zählung der einzelnen Grafschaft vorgelegt und f zu erhalten unded Anwendungen pro Jahr mit dem folgenden Code:
countysum <- counties %>%
select(-funded) %>%
group_by(county, year) %>%
summarise_all(sum, na.rm = T)
Und die Ausgabe wie folgt aussieht:
County Year sum.a sum.b
a 2016 32 0
a 2015 24 0
b 2016 0 16
Aber dann die Daten in einem aufgeräumter Format zu bekommen ich noch ein paar Befehle verwendet:
countysum$submitted <- rowSums(countysum[,3:15, na.rm = T) #3:15 are county indicator vars
countysum <- countysum[,-c(3:19)]
Jetzt ist meine Frage: Gibt es eine Möglichkeit, all diese Aktionen in eine einzige Pipeline zu reduzieren? Im Moment habe ich Code, der funktioniert, würde aber lieber einen Code haben, der funktioniert und ein wenig einfacher zu folgen ist. Entschuldigung für fehlende Daten, ich kann es nicht teilen.
Werfen Sie einen Blick auf 'tidyr :: spread' - ich denke, das ist, was Sie im ersten Abschnitt zu tun versuchen –
Bitte zeige ein kleines reproduzierbares Beispiel. In Ihrem Code gibt es "funded", aber in dem Beispiel ist es nicht gezeigt – akrun
@akrun mein Fehler, "finanziert" entspricht "Funding Received" im ursprünglichen Beitrag. – MokeEire