Ich muss ein paar Faktorvariablen rekodieren, aber ich versage immer weiter.Bedingte Umcodierung des Faktors
meine Daten das sieht aus wie Angenommen:
df <- data.frame(a = c("1","2","","Other"),
b = c("3","","Other","Other"),
v1 = c("no","no","yes","yes"),
v2 = c("no","yes","no","no"),
v3 = c("no","yes","yes","no"))
df$a <- as.character(df$a)
df$b <- as.character(df$b)
df
> a b v1 v2 v3
> 1 1 3 no no no
> 2 2 no yes yes
> 3 Other yes no yes
> 4 Other Other yes no no
Ich möchte
v1
"yes" if (a=="1" | b=="1")
sein,
v2
"yes" if (a=="2" | b=="2")
und
v3
"yes" if (a=="3" | b=="3")
sein zu sein.
So ist das Muster:
v#
"yes" if (a="#" | b="#")
zu sein.
Ich habe versucht, mit R Basis 2 Loops, aber es hat nicht funktioniert:
for(i in c("a","b")){
for(j in as.character(1:3)){
df[which(df[,i]==j),][,c(paste("v",j,sep=""))] <- "yes"
}}
Ich würde dies mit dplyr::mutate
bevorzugen, aber nicht wissen, wie ...
Sie können einen si verwenden ngle loop 'df [paste0 (" v ", 1: 3)] <- lapply (as.zeichen (1: 3), funktion (i) ifelse (df $ a == i & df $ b == i," ja ", NA))' – akrun
von '|' Ich meine 'oder' –
Ist das Muster immer gleich? d.h. für v1, a = 1 | b = 1, für v2a = 2 | b = 2 usw. ...? – Sotos