Verwenden, wenn andere auf einen dataframe über mehrere Spalten

Ich habe einen großen Datensatz der Proben mit Deskriptoren, ob die Probe durchführbar ist - es sieht (Art), wie diesem hier, wo 'desc', ist die Spalte "Beschreibung" und "leer" zeigt die Stichprobe ist nicht sinnvoll:

     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

Will ich mit einer if-else-Anweisung, um die Zeilen mit Daten unbrauchbar zu NA. Der Letzte Datensatz sollte wie folgt 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 

Habe ich versucht, eine for-Schleife, aber ich habe Probleme dabei, die for-Schleife zu ändern, werden alle Spalten in einer Schleife. Meine wirklichen Datenbestand hat 40 Spalten, so möchte ich lieber nicht haben, um es zu verarbeiten in separate Schleifen! Hier ist der code zum ändern einer Spalte:

for(i in 1:length(desc)){
    if(dat$desc[i] =="blank"){
    dat$x[i] <- NA
    } 
    else {
    dat$x[i] <- dat$x[i]
    }
}

Machte ich die sample-Daten mit diesem script:

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)

Sorry, wenn dies ist eine grundlegende Frage, die ich damit verbracht habe, den ganzen Vormittag suchen in Foren und nicht in der Lage gewesen, eine Lösung zu finden.

Jede Hilfe ist sehr willkommen!

InformationsquelleAutor mlcyo | 2016-05-19
Schreibe einen Kommentar