2016-04-28 16 views
-4

Ich habe ein dfBasierend auf bedingte Anweisung fügen neue Spalte Datenrahmen

a b 
0 0 
1 1 
2 1 
0 0 

I Spalte c so hinzufügen möchten, dass, wenn Spalte a=1 und b=1c = NA Wie kann ich es tun? Ich habe versucht, wenn und wenn ich aber Fehler Vielen Dank

+0

Verwenden Sie versuchen können, 'c ("O", NA) [(a == 0) + 1]' – Cath

+0

sorry, ich fürchte, es richtig hinzufügt charachters Spalte 'b' – HoHoHo

+0

Um das zu tun, müssen Sie tatsächlich die Zuweisung tun:' df $ b <- c ("O", NA) [(a == 0) + 1] ' –

Antwort

1

Sie scheinen zu fragen immer mehr und mehr Fragen nach dem Zufallsprinzip, aber wenn Sie wollen nur wenn und nur wenn b==1 & a==1 dann nur tun.

df[which(b == 1 & a == 1),c('c')] <- NA 
#df[which(b == 1 & a == 1),]$c <- NA -- alternate. 
#df[(b == 1 & a == 1), ]$c <- NA -- another. 

Diese zielen auf, was Sie wollen und übernimmt auch bereits Sie eine Spalte c erstellt haben. Wenn nicht ... erstellen Sie es einfach mit einem Füllzeichen von 0 oder was Sie wollen.

df$c <- "filler"; 
+0

du nicht nee Entweder 'which' und' c' in deiner ersten Zeile und du musst sagen, wo nach den Variablen gesucht werden soll (also 'df [df $ b == 1 & df $ a == 1," c "] <- NA ') und natürlich funktioniert das nur, wenn 'c' bereits existiert ... – Cath

+2

Dies erzeugt nur eine Spalte voller NA. Natürlich ist das wahrscheinlich nicht falsch, da wir alle an diesem Punkt raten –

+0

@RichardScriven nicht, wenn da schon c drin ist. –

0

data.table

library(data.table) 
setDT(df)[, c:= 0][a==1 & b==1, c:= NA][] 
Verwandte Themen