Конечно, есть лучший способ создать столбец, который соответствует столбцу 'target'?
Я искал Stack для ответа, но, похоже, никто не знал, как это сделать.Возможно, с совершенно глупой точки зрения (моя голова, возможно, была в режиме Stata, потому что так думает мой начальник, который попросил меня создать эту новую переменную 'output').
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