我正在尝试使用
mutate
+ ifelse
在数据集中创建一个新变量。
我的示例数据集如下
df = structure(list(id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), resp_gender = c("female",
"male", "female", "female", "male", "female", "male", "male",
"female", "female"), hoh_gender = c("male", "male", "male", "male",
"female", "male", "female", "female", "male", "male"), is_hoh = c("no",
"no", "no", "yes", "no", "no", "yes", "no", "no", "yes"), gender_final = c("male",
"male", "male", "female", "female", "male", "male", "female",
"male", "female")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-10L))
目标是创建性别最终列,以便如果 is_hoh == yes 则采用 hoh_gender 的值,如果为 no 则采用 resp_gender 的值。我正在使用下面的代码,它似乎没有产生准确的结果
mutate(gender_final = ifelse(is_hoh == "yes", hoh_gender, resp_gender))
任何帮助将不胜感激。 预先感谢!
不确定如何将
mutate
行连接到数据集,因为它已经有一个名为 gender_final
的列,但它似乎按照您的预期工作。在我的建议中,我刚刚将新列称为 gender_final2
,因为我不想更改您的原始数据。
library(dplyr)
# Use df and conditional mutate to create gender_final2
df <- df %>%
mutate(gender_final2 = ifelse(is_hoh == "yes", hoh_gender, resp_gender))
id resp_gender hoh_gender is_hoh gender_final gender_final2
<dbl> <chr> <chr> <chr> <chr> <chr>
1 1 female male no male female
2 2 male male no male male
3 3 female male no male female
4 4 female male yes female male
5 5 male female no female male
6 6 female male no male female
7 7 male female yes male female
8 8 male female no female male
9 9 female male no male female
10 10 female male yes female male