-9 in NA umkodieren viele Variablen

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
rotezora
Beiträge: 10
Registriert: Fr Apr 19, 2019 10:16 am

-9 in NA umkodieren viele Variablen

Beitrag 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!
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: -9 in NA umkodieren viele Variablen

Beitrag 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
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: -9 in NA umkodieren viele Variablen

Beitrag von student »

Hallo Zora,

vielleicht hilft das hier weiter?
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: -9 in NA umkodieren viele Variablen

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: -9 in NA umkodieren viele Variablen

Beitrag 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
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: -9 in NA umkodieren viele Variablen

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
rotezora
Beiträge: 10
Registriert: Fr Apr 19, 2019 10:16 am

Re: -9 in NA umkodieren viele Variablen

Beitrag 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
Antworten