Verwenden, wenn sonst in einem Datenframe über mehrere Spalten
Ich habe einen großen Datensatz von Stichproben mit Deskriptoren darüber, ob die Stichprobe lebensfähig ist - sie sieht ungefähr so aus, wobei "desc" die Beschreibungsspalte ist und "blank" angibt, dass die Stichprobe nicht lebensfähig ist:
desc x y z
1 blank 4.529976 5.297952 5.581013
2 blank 5.906855 4.557389 4.901660
3 sample 4.322014 4.798248 4.995959
4 sample 3.997565 5.975604 7.160871
5 blank 4.898922 7.666193 5.551385
6 blank 5.667884 5.195825 5.232072
7 blank 5.524773 6.726074 4.767475
8 sample 4.382937 5.926217 5.203737
9 sample 4.976908 3.079191 4.614121
10 blank 4.572954 4.772373 6.077195
Ich möchte eine if else-Anweisung verwenden, um die Zeilen mit nicht verwendbaren Daten auf NA zu setzen. Der endgültige Datensatz sollte folgendermaßen aussehen:
desc x y z
1 blank NA NA NA
2 blank NA NA NA
3 sample 4.322014 4.798248 4.995959
4 sample 3.997565 5.975604 7.160871
5 blank NA NA NA
6 blank NA NA NA
7 blank NA NA NA
8 sample 4.382937 5.926217 5.203737
9 sample 4.976908 3.079191 4.614121
10 blank NA NA NA
Ich habe eine for-Schleife ausprobiert, aber ich habe Probleme, die for-Schleife dazu zu bringen, alle Spalten in einer Schleife zu ändern. Mein echter Datensatz hat 40 Spalten, daher muss ich ihn lieber nicht in separaten Schleifen verarbeiten! Hier ist der Code, um jeweils eine Spalte zu ändern:
for(i in 1:length(desc)){
if(dat$desc[i] =="blank"){
dat$x[i] <- NA
}
else {
dat$x[i] <- dat$x[i]
}
}
Ich habe die Beispieldaten mit diesem Skript erstellt:
desc <- c("blank", "blank", "sample", "sample", "blank", "blank", "blank", "sample", "sample", "blank")
x <- rnorm(10, mean=5, sd=1)
y <- rnorm(10, mean=5, sd=1)
z <- rnorm(10, mean=5, sd=1)
dat <- data.frame(desc,x,y,z)
Tut mir leid, wenn dies eine grundlegende Frage ist, habe ich den ganzen Morgen in Foren gesucht und konnte keine Lösung finden.
Jede Hilfe wird sehr geschätzt!