sorry, jetzt habe ich beim Antworten aus versehen Deine Frage überschrieben -- wir bekommen das aber dennoch hin. Für die anderen hier: Lau will in seinem Dataframe die Werte -9 durch NA ersetzen. Dafür hat er eine Lösung, die mit einigen wenigen Spalten funktioniert, aber nciht, wenn er alle Spalten mit reinnimmt. Hier nun meine Antwort:
Das ist ganz schrecklicher Code, der da nach und nach gewachsen ist. Sowas gehört aufgeräumt und lesbar geschrieben!
Im Wesentlichen sehe ich da zwei Vektoren mit Spaltennamen, die übereinstimmen mit Ausnahme des Spaltennamens WS06, der kommt in der ersten aber nicht in der zweiten Liste vor. Kann das schon der Fehler sein?Code: Alles auswählen
Data.alles[c("gender", "age", "Bildabschl", "Wohnortgr","E101_01", "E101_02", "E101_03", "E101_04", "E101_05", "E101_06","E101_07", "E101_08", "E101_09", "E101_10", "E101_11", "XP01_01", "XP01_02", "XP01_10", "XP01_11", "XP01_12", "XP01_13", "XP01_14", "XP01_15", "CO_01", "CO_02", "CO_03", "CO_04", "CO_05", "CO_06", "CO_07", "CO_08", "CO_29", "CO_30", "CO_31", "CO_32", "CO_09", "CO_10", "CO_11", "CO_12", "CO_13", "CO_14", "CO_15", "CO_16", "CO_17", "CO_18", "CO_19", "CO_20", "CO_21", "CO_22", "CO_23", "CO_24", "CO_25", "CO_26", "CO_27", "CO_28", "W101_01", "W101_02", "W101_03", "W101_04", "W101_05", "PK01_05", "PK01_10", "PK01_15","B211", "B212", "WS06", "B213", "WS02")][Data.alles[c("gender","age", "Bildabschl", "Wohnortgr","E101_01", "E101_02", "E101_03","E101_04", "E101_05", "E101_06", "E101_07", "E101_08", "E101_09", "E101_10","E101_11", "XP01_01", "XP01_02", "XP01_10", "XP01_11", "XP01_12", "XP01_13", "XP01_14", "XP01_15", "CO_01", "CO_02", "CO_03", "CO_04", "CO_05", "CO_06", "CO_07", "CO_08", "CO_29", "CO_30", "CO_31", "CO_32", "CO_09", "CO_10", "CO_11", "CO_12", "CO_13", "CO_14", "CO_15", "CO_16", "CO_17", "CO_18", "CO_19", "CO_20", "CO_21", "CO_22", "CO_23", "CO_24", "CO_25", "CO_26", "CO_27", "CO_28", "W101_01", "W101_02", "W101_03", "W101_04", "W101_05", "PK01_05", "PK01_10", "PK01_15","B211", "B212", "B213", "WS02")]==-9] <- NA
Wenn Du aus dieser einen Code-Zeile ein paar mehr gemacht hättest, hättest Du das nach und nach testen und den Fehler eingrenzen können. Programmiertechnisch ist aber wahrscheinlich die doppelte Auflistung der Spaltennamen das Problem: Wenn es zuviele werden, dann schleichen sich Fehler ein. Ein möglicher Ansatz wäre es, nur eine Liste mit solchen Spaltennamen zu haben und darüber mit einer Schleife zu laufen. Wenn in Deinem gesamten Dataframe alle Werte -9 durch etwas ausgetausch werden sollen, kannst Du auch mit apply jede Zelle einzeln bearbeiten:
Code: Alles auswählen
beispiel <- as.data.frame(matrix(sample(x = c(-9, 1:8), size = 200, replace = TRUE), ncol = 20))
print(beispiel)
ergebnis <- apply(beispiel, c(1, 2), function(x) if(x==-9) NA else x)
print(ergebnis)
Bernhard