Das Problem scheint zu einfach zu sein, um überhaupt hier aufgestellt zu werden; aber ich kann keine Lösung finden, die funktioniert. Ich habe einen Datenrahmen (df
) von 3 Spalten; davon ist eine Faktor-Spalte (df$Colors
) mit 3 Ebenen ("Blau", "Rot" und "Schwarz"). In einer anderen Spalte (df$Outliers
) sind numerische Werte, von denen einige "NA" sind. Ich möchte eine weitere Spalte hinzufügen (sagen wir df$NewColors
) ähnlich wie df$Colors
wo für "NA" in df$Outliers
, df$NewColors = "Orange"
. Ich fügte hinzu, eine zusätzliche Ebene wie folgt:Für NA in einer Spalte; Faktorstufen einer anderen Spalte können nicht geändert werden
> levels(df$Colors) <- c(levels(df$Colors), "Orange")
jedoch die neu hinzugefügte Spalte alte „Farbe“ Werte zu verwenden scheint, anstatt sie durch „Orange“ ersetzt, wo es should.Also es ganzzahlige Werte für Faktoren erzeugt von df$Colors
aber ich möchte die alte kategoriale Variable behalten. Der Code, den ich verwendet wird, ist wie folgt:
>levels(df$Color) <- c(levels(df$Color),"Orange")
> for (i in 1:nrow(df)) {
df$NewColors[i] <- ifelse (is.na(df$Outliers[i]), "Orange", df$Colors[i])
}
Wohin gehe ich falsch?
Hier sind die Beispieldaten:
> BodyLength <- rep(seq(1,9),2)
> Colors <- rep(c("Black","Blue","Red"),6)
> Outliers <- c(seq(1,8),"NA",seq(1,8),"NA")
> df <- data.frame(BodyLength,Colors,Outliers)
„NA“ ist von NA anders ersetzt werden. –