2016-07-13 4 views
0

ich versuche, NA-Werte in einem Datenframe auf 0 zu setzen, wenn die ID für die Zeile in einer separaten Liste enthalten ist, aber nichts bekommen (keine Änderungen kein Fehler), oder dieser Fehler:Wie man ein wenn dann für jede Instanz einer Variablen in einem Datenrahmen in R

the condition has length > 1 and only the first element will be used 

Hier ist, wie meine Daten strukturiert:

id out1 in1 bet1 
    1 6 0 0  
    10 NA NA NA  
100 7 14 0 

Also, wenn die ID 10 in dem separaten Vektor war, würde ich diese Werte will auf Null zurückgesetzt.

Mein Code ist unten. Jede Hilfe wird geschätzt!

if(is.na(dset_n$bet3) && dset_n$id %in% unique(net_t3[,1])) { 
    dset_n$bet3 <- 0 
} 

Lösung:

dset_n$m <- dset_n$id %in% unique(net_t2[,1]) 
dset_n$out2[dset_n$m & is.na(dset_n$out2)] <- 0 
+0

Bitte geben reproduzierbare Daten, anstatt nur zu zeigen, wie es aussieht. Sie können R-Code angeben, um die Daten zu erstellen, ein integriertes Dataset zu verwenden oder die Daten "auszugeben". –

+1

'if' wird verwendet, um einen Vergleich auszuwerten, der einen einzelnen logischen Wert wie 'if (1 == 1)' nicht vergleicht Vektoren wie' if (c (1,2,3) == c (1,2,3)) ' – thelatemail

+0

Ah habe es. Ich versuche jetzt einen booleschen Vektor zu erstellen, den ich verwenden kann, um zu wissen, wann eine Variable neu codiert werden sollte. – mysterybug

Antwort

0

Ich sehe nicht, was Ihr versucht Lösung zu tun versucht, aber aufgrund Ihrer verbalen Beschreibung würde ich dies tun:

net_t3 <- cbind(c(10, 20)) 
dset_n <- read.table(text='id out1 in1 bet1 
    1 6 0 0 
    10 NA 1 NA 
100 7 14 0', header=T) 
m <- dset_n$id %in% net_t3[, 1] 
dset_n[m,is.na(dset_n[m,])] <- 0 
+0

Danke! Ich machte den Vektor und versuchte, Code zu schreiben, um meine Daten zu reparieren (ich verstehe die letzte Zeile nicht vollständig), aber es gibt keine Änderungen. Das habe ich gemacht: dset_n $ out3 [is.na (dset_n $ id) & dset_n $ m == TRUE] <- 0 – mysterybug

+0

Ich habe die Variablen in meiner Antwort so umbenannt, dass sie (glaube ich) mit Ihrem Beispiel übereinstimmen. Hilft das? – Ista

+0

Um die letzte Zeile zu verstehen, brechen Sie sie auseinander. Betrachten Sie 'dset_n [m,]' und 'is.na (dset_n [m,])' separat. Verstehen Sie, wie die Teile funktionieren und finden Sie heraus, wie sie zusammenpassen. – Ista

Verwandte Themen