In my tutorial
dataframe below, I'm trying to recode column schgend
according to the following condition:
In rows where we have: sex=="girl" & schgend =="girlsch"
OR we have: sex=="boy" & schgend=="boysch"
, the values in column schgend
must be recoded to "same-sex"
. Otherwise, the values in column schgend
should remain unchanged.
I'm wondering, though, why my ifelse()
call doesn't produce my desired outcome, is there a fix?
library(R2MLwiN)
data("tutorial")
transform(tutorial, schgend_new =ifelse(sex=="girl" & schgend=="girlsch" ||
sex=="boy" & schgend=="boysch","same-sex",schgend))
CodePudding user response:
You can do it using dplyr
library(dplyr)
tutorial_recoded <- tutorial %>%
mutate(schgend_new = ifelse(sex=="girl" & schgend=="girlsch" |
sex=="boy" & schgend=="boysch",
"same-sex", schgend))
CodePudding user response:
Try this:
tutorial$schgend_new <- ifelse(
(tutorial$sex=="girl" & tutorial$schgend=="girlsch") |
(tutorial$sex=="boy" & tutorial$schgend=="boysch"),
"same-sex",
tutorial$schgend)