ursprüngliche Frage
ich eine Reihe von Dummy-Variablen in einem Datenrahmen für jeden Wert von x in dem Datenrahmen hinzugefügt werden soll, aber enthaltend eine NA, wenn Eine andere Variable ist NA. Zum Beispiel nehme ich die folgenden Datenrahmen haben:R: Erstellen von Dummy-Variablen für Werte einer Variablen abhängig, eine andere Variable
x <- seq(1:5)
y <- c(NA, 1, NA, 0, NA)
z <- data.frame(x, y)
Suche zu produzieren:
- var1, so dass: z $ var1 == 1, wenn x == 1, sonst, wenn y = = NA, z $ var1 == NA, sonst z $ var1 == 0.
- var2 so dass: z $ var2 == 1 wenn x == 2, sonst wenn y == NA, z $ var2 == NA , sonst z $ var2 == 0.
- var3 usw.
Ich kann nicht herausfinden, wie man dies vektorisiert. Ich suche nach einer Lösung, die für eine große Anzahl von Werten von x verwendet werden kann.
UPDATE
Es gab einige Verwirrung, die ich durch jeden Index von x wiederholen wollte. Ich suche nicht danach, sondern nach einer Lösung, die für jeden eindeutigen Wert von x eine Variable erzeugt. Wenn Sie die folgenden Daten als Eingabe unter:
x <- c(1,1,2,3,9)
y <- c(NA, 1, NA, 0, NA)
z <- data.frame(x, y)
ich suche z $ var1, z $ var2, z $ var3, z $ var9 wo z $ var1 < - c (1, 1, NA, 0 , NA) und z $ var2 < - c (NA, 0, 1, 0, NA). Die ursprüngliche Lösung erzeugt z $ var1 < - z $ var2 < - c (1,1, NA, 0, NA).
Nicht ganz. Die Werte von var1, var2, var3 usw. sollten nur {0, 1, NA) sein. Ich vermute, das sollte ifelse sein (x == i, 1, ... Kannst du auch erklären, wie setNames hier funktioniert? Nicht sicher, warum ich es brauche. – user3614648
Mein schlechtes von der Verwirrung der Ergebnisse und Ergebnisse, siehe Das Update. 'setNames' ist nur eine bequeme Möglichkeit, die Spaltennamen einzurichten. Wenn Sie sich nicht darum kümmern, können wir es entfernen. – Psidom
Aktualisiert: siehe oben. – user3614648