2017-10-23 7 views
0

Ich denke, das ist eine super einfache Frage, aber ich kann nicht scheinen, es herauszufinden.Kombinieren von zwei Variablen in r

Ich habe zwei Variablen: varA und varB.

varA hat Werte 'a' und NA und varB hat Werte 'b' und NA.

möchte ich sie in eine Variable varC mit Wert kombinieren 'a' wo varA ist =='a' und 'b' wo varB=='b' ist.

Ich habe dies versucht:

varC <- varA 
varC[varB=='b'] <- varB 

aber ich habe den Fehler:

Error in [<-.factor(tmp, varB == "b", : NAs are not allowed in subscripted assignments

Was mache ich falsch hier?

+1

'NA ==" b "' gibt 'NA' zurück. Und 'NA's sind nicht erlaubt, wenn man Aufgaben wie' varC [NA] <- 1' ausführt - ich nehme an, Sie müssen wahrscheinlich Ihren Test umbinden 'varB ==" b "' like 'was (varB == 'b ")". – thelatemail

+0

Relevante Diskussion: https://stackoverflow.com/questions/26893023/nas-are-not-allowed-in-subscripted-assignments – thelatemail

+1

'varC [which (varB == 'b')] <- varB [welche (varB == 'b')] ' – Suren

Antwort

1

Die Bedingung varB=='b' gibt NA zurück, wenn varB ist. Verwenden Sie is.na(), um auf NA zu testen. Hier ein Beispiel:

a <- c(NA, 'a', NA) 
b <- c('b', NA, 'b') 

c <- a 
c[is.na(c)] <- b[is.na(c)] 

c 

[1] "b" "a" "b" 
+0

Das funktionierte, aber ich musste es zuerst mit as.numeric() konvertieren. Ich denke, mein Datensatz wurde in ein r-Format umgewandelt, funkional, faktoriell. Danke für die einfache Lösung. –