There's surely a better way to create a column that matches the 'target' column?
I scoured Stack for an answer, but it appears nobody has needed to know how to do this. Maybe from a completely stupid perspective (my head may have been in Stata mode as that's how my boss thinks, who asked me to create this new 'output' variable).
A <-c("bears", "bears", "na", "pandas", "pandas", "bears", "pandas")
B <-c("bears", "pandas", "na", "bears", "na", "bears", "pandas")
target <-c("bears", "the_zoo", "na", "the_zoo", "pandas", "bears", "pandas")
df_test <-data.frame(A,B,target, stringsAsFactors =FALSE)
class(df_test$B)
for(i in 1:nrow(df_test)){
# Case: 1: Both are equal
df_test$output[i] <- ifelse(df_test$A[i] == df_test$B[i],
yes = as.character(df_test$A[i]),
# Case 2: A contains NA
no = ifelse(df_test$A[i] == "na",
yes = as.character(df_test$B[i]),
# Case 2.2: B contains NA
no = ifelse(df_test$B[i] =="na",
yes = as.character(df_test$A[i]),
# Case 3: All other possibilities are "the_zoo"
no = "the_zoo"
)))
}
df_test
> df_test
A B target output
1 bears bears bears bears
2 bears pandas the_zoo the_zoo
3 na na na na
4 pandas bears the_zoo the_zoo
5 pandas na pandas pandas
6 bears bears bears bears
7 pandas pandas pandas pandas
Aucun commentaire:
Enregistrer un commentaire