根据条件进行变异

问题描述 投票:0回答:1

我正在尝试使用

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))

任何帮助将不胜感激。 预先感谢!

r dplyr
1个回答
0
投票

不确定如何将

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   

© www.soinside.com 2019 - 2024. All rights reserved.