Seite 1 von 1

-9 in NA umkodieren viele Variablen

Verfasst: Fr Apr 19, 2019 10:22 am
von rotezora
Hallo,

ich bin am Aufbereiten eines etwas grosseren Datensatzes, wobei fehlende Werte mit "-9" gekennzeichnet sind. Diese moechte ich in NA umwandeln und habe dies bisher so gemacht:
is.na(csv.setALL$MN01_07)<-which(csv.setALL$MN01_07==-9)
is.na(csv.setALL$MN01_09)<-which(csv.setALL$MN01_09==-9)
is.na(csv.setALL$MN01_12)<-which(csv.setALL$MN01_12==-9)
....

Gibt es eine Moeglichkeit, dies nicht fuer einzelne Variablen zu tun, sondern ueber den gesamten Datensatz alle "-9" in "NA" umzuwandeln?

Nach laengerer Recherche ist die Moeglichkeit, die mir begegnet ist (ich jedoch nicht ganz die Umsetzung sehe) mittels for-Schleife.

Viele Gruessen und Danke!

Re: -9 in NA umkodieren viele Variablen

Verfasst: Fr Apr 19, 2019 11:06 am
von jogo
Hallo Zora,

willkommen im Forum!
Du könntest gleich beim Einlesen der Daten den Parameter na.strings= verwenden, z.B.

Code: Alles auswählen

read.table(..., na.strings = "-9")
Gruß, Jörg

Re: -9 in NA umkodieren viele Variablen

Verfasst: Fr Apr 19, 2019 4:05 pm
von student
Hallo Zora,

vielleicht hilft das hier weiter?

Re: -9 in NA umkodieren viele Variablen

Verfasst: Fr Apr 19, 2019 10:59 pm
von bigben
Ich bin ja sonst für Jörgs Ansatz, biete nachrangig aber folgendes Code-Beispiel an (auf Wunsch mit for-Schleife):

Code: Alles auswählen

bsp <- data.frame(a = c(1,1,1,-9), b = c(-9, -9, -9, -9),
                  c = c(-9, -9, -9 , -9), d = c(1, -9, 1, -9))
print(bsp)

for(i in c("a", "b", "d")){
  bsp[ bsp[,i] == -9, i ] <- NA
}

print(bsp)
Wenn es wirklich um *alle* Spalten geht und alle Spalten Zahlenwerte enthalten, dann geht das unkompliziert, ohne Schleife, so:

Code: Alles auswählen

bsp2 <- data.frame(a = c(1,1,1,-9), b = c(-9, -9, -9, -9),
                  c = c(4, 3, 2, -9), d = c(1, -9, 1, -9))
print(bsp2)
bsp2 <- apply(bsp2, 1:2, function(wert) if (wert != -9) wert else NA)
print(bsp2)
(Jörg würde vllt. sagen: "Ist'n Einzeiler")


HTH,
Bernhard

Re: -9 in NA umkodieren viele Variablen

Verfasst: Fr Apr 19, 2019 11:22 pm
von jogo
Hallo Bernhard,

wenn es wirklich um alle Spalten geht, dann doch kurz:

Code: Alles auswählen

bsp <- data.frame(a = c(1,1,1,-9), b = c(-9, -9, -9, -9),
                  c = c(-9, -9, -9 , -9), d = c(1, -9, 1, -9))
bsp[bsp==-9] <- NA
(ja, man glaubt es kaum)

Gruß, Jörg

Re: -9 in NA umkodieren viele Variablen

Verfasst: Fr Apr 19, 2019 11:58 pm
von bigben
Bring(s)t mich immer wieder zum Staunen. Ob ich das gut finde, dass R mich immer wieder überrascht? Bin mir da nicht so sicher..
Danke für die Nachhilfe,
Bernhard

Re: -9 in NA umkodieren viele Variablen

Verfasst: Di Apr 23, 2019 10:59 am
von rotezora
Hallo Joerg, Bernhard und Student,

vielen Dank fuer eure Hilfe! Neben dem Ueberraschen finde ich R ueberragend darin, mich von einfachen Loesungen, die nicht funktionieren, hin zu komplexen Formeln zu leiten, um dann zu merken, dass die eigentliche Loesung doch einfacher ist, als die zu Beginn bereits einfache Idee.

Viele Gruesse,
Zora