Beispieldatenrahmen:eine Spalte ändern, nur wenn eine bestimmte Bedingung erfüllt ist, sonst kann es nicht ändern
set.seed(1)
df <- data.frame(x = runif(10),
y = runif(10),
group = factor(sample(LETTERS[1:10], 10, replace = TRUE)))
Ich mag x
gleich y
wenn group == "A"
setzen, sonst will ich nicht, es zu ändern, . Für jetzt fand ich diese Lösung:
df %<>% mutate(x = ifelse(group == "A", y, x))
Ist das eine gute Lösung oder gibt es bessere/schnellere Wege?
Warum müssen Sie mutieren? Kannst du nicht einfach tun: 'df $ x <- ifelse (group ==" A ", y, x)'? – seeellayewhy
versuchen Sie Ihren Code: Es wird nicht funktionieren. 'Fehler in ifelse (group ==" A ", y, x): Objekt 'Gruppe' nicht gefunden '. Du meintest wahrscheinlich 'df $ x <- ifelse (df $ group ==" A ", df $ y, df $ x)', aber ich bin mir nicht sicher, ob das letzte einfacher/schneller ist als das 'mutate'. Es ** könnte vielleicht schneller ** sein, vielleicht auf einem größeren Datenrahmen, aber bei meinem realen Anwendungsfall scheinen die beiden Methoden äquivalent zu sein. – DeltaIV
Sorry, habe meine 'df $' s dort vergessen. Wie genau willst du verbessern, was du bereits hast? Das 'mutate' scheint ein wenig überflüssig zu sein, wenn' ifelse() 'alleine funktionieren würde, besonders wenn man bedenkt, dass es sich um eine Basislösung handelt. – seeellayewhy