Ich habe einen Datenrahmen mit vielen Spalten, darunter vier, die Unterkategorien darstellt.Zeilenweise anwenden Reduzieren mit muate_?
data.frame(site_name=c("bla","blo","blu"), page_1=c(NA,NA,NA), page_2=c(NA,"detail_1","detail_2"), page_3=c("hello", "hola", NA), page_4=c(NA,NA,NA))
site_name page_1 page_2 page_3 page_4
1 bla NA <NA> hello NA
2 blo NA detail_1 hola NA
3 blu NA detail_2 <NA> NA
Ich möchte mit einem nur die am weitesten rechts stehende nicht-NA Detailebene zeigt einzelne Spalte, alle diese ‚page_x‘ Spalten ersetzen. Es gibt viele zeilenweise Fragen, aber ich kann keine finden, die mit NSE und Reduce arbeiten.
In dem obigen Beispiel das wäre:
site_name page_1 page_2 page_3 page_4 page
1 bla NA <NA> hello NA hello
2 blo NA detail_1 hola NA hola
3 blu NA detail_2 <NA> NA detail_2
Ich dachte, es ist ein gutes Beispiel würde jede Zeile reduzieren über zu verwenden. Ich habe eine Version, die in einer einzigen Zeile funktioniert, aber ich finde keine Möglichkeit, sie auf mutate_ anzuwenden.
Reduce(function(prec,col){ifelse(!is.na(row[col]), row[col], prec)},
grep("^page",names(row),value=T), NA)}
Dies funktioniert nicht (wie ich die 'Reihe' Objekt erraten wird auf diese Weise nicht wirklich bestanden):
mutate_(.dots = ~Reduce(function(prec,col){ifelse(!is.na(row[col]), row[col], prec)},
grep("^page",names(row),value=T), NA)}