首页 > 解决方案 > 如何使用 R if 语句来区分变量的两个选项

问题描述

我是 R 新手,想了解如何使用 if 语句/if-else 函数来区分变量的两个选项,在我的例子中是性别。具体来说,我想使用这个数据集来看看男性和女性在他们的名字上拥有银行账户是否存在差异(-1 和 -2 是女性和男性,从 1:5 开始,这是金融账户的选项)。

dput(Finaccount)

> dput(head(Finaccount))
structure(list(finaccount = c("0", "0", "0", "2 6", "0", "0"), 
    genderresp = c(-2, -1, -2, -2, -2, -2)), row.names = c(NA, 
6L), class = "data.frame")

接下来,我将创建一个卡方表,但我也会找到有关如何显示数据方向的任何建议(因此不仅有重要意义,而且一个性别的名字比其他性别拥有更多的银行账户) .

我正在使用其他方法来区分性别,主要是通过创建两个带有子集或 grepl 的数据集,如下例所示,但我假设有更简单的方法。

RespSeason <-- data.frame(respjobhh, gendercleaned)
View(RespSeason)                                                              
RespseasonCleaned = na.omit(RespSeason)                                 
View(RespseasonCleaned)                                                             
Seasonwoman <-- subset(RespseasonCleaned, gendercleaned == "-2")                    
Seasonmen<-- subset(RespseasonCleaned, gendercleaned == "-1")
gender = hh_complete_fixed_cleaned[,22 ]
gendercleaned = na.omit(gender)jobhh = hh_complete_fixed_cleaned[, 128]
jobhhcleaned = na.omit(jobhh)
sapply(jobhhcleaned, mean, na.rm = TRUE)

data.frame(jobhh, gendercleaned)
View(jobhh, gendercleaned) 
genderjobbhh <-- data.frame(jobhh, gendercleaned)
View(genderjobbhh)

malehh <--genderjobbhh[!grepl('2', genderjobbhh$gendercleaned),]
View(malehh)
sapply(malehh, mean, na.rm = TRUE)
femalehh <--genderjobbhh[!grepl('1', genderjobbhh$gendercleaned),]
View(femalehh)
sapply(femalehh, mean, na.rm = TRUE)

预先感谢您的贡献

标签: rif-statementstatistics

解决方案


如果您希望通过小组获得平均值,以下内容可能会有所帮助:

library(tidyverse)

df %>%
 mutate(gender = if_else(gender == -1, "male", if_else(gender == -2, "female", "unknown"))) %>%
 group_by(gender) %>%
 summerize(mean_gender = mean(gender))

或者

library(tidyverse)

df %>%
 mutate(gender = as.character(gender),
        gender = recode(gender, "-1" = "male", "-2" = "female")) %>%
 group_by(gender) %>%
 summerize(mean_gender = mean(gender))

推荐阅读