首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的If,then语句

R中的If,then语句
EN

Stack Overflow用户
提问于 2021-10-02 00:34:39
回答 1查看 74关注 0票数 0

我正在自学R,并试图弄清楚如何正确地编写if,then语句。我有一个人口统计数据的df,我想根据婚姻状况创建一个变量来表示家庭中的最高学位。但是,如果是1、2、4、5或6,我希望使用任一照顾者的最高学历。

代码语言:javascript
复制
> ExcelData <-df
> marital <- c(1, 0, 1, 5, 7, 2, NA, 1)
> education <- c("10", "12", "13", "14", "16", "18", "12", "14")
> education_partner <- c("11", "18", "10", "14", "11", "12", "16", "16")

我写了这篇文章,它工作了,创建了一个带有母性教育的新df,但我不确定如何写它,当它是1,2,4,5或6时,它打印出更大的教育价值或education_partner。任何建议都非常感谢!!

代码语言:javascript
复制
if(ExcelData$marital =  0 | 3:7 )
  hhHighestDegree <- (ExcelData$education)
EN

回答 1

Stack Overflow用户

发布于 2021-10-02 00:36:35

if/else未矢量化。我们可以使用ifelse或创建一个逻辑向量,然后根据该逻辑向量将'education‘列的子集分配给一个新对象'hhHighestDegree’。

根据显示的代码,我们需要提取“教育”值,其中“婚姻”值是0或3:7。因此,我们可以使用%in%创建逻辑向量(与比较运算符(><==)不同,%in%还将为NA值返回FALSE )。

代码语言:javascript
复制
i1 <- ExcelData$marital %in% c(0, 3:7)
hhHighestDegree <- ExcelData$education[i1]

或者如果我们更喜欢在|中使用>

代码语言:javascript
复制
i1 <- with(ExcelData, (marital == 0| (marital >=3 & marital<=7)) & 
            !is.na(marital))
hhHighestDegree <- ExcelData$education[i1]

数据

代码语言:javascript
复制
ExcelData <- structure(list(marital = c(1, 0, 1, 5, 7, 2, NA, 1), 
education = c("10", 
"12", "13", "14", "16", "18", "12", "14"), education_partner = c("11", 
"18", "10", "14", "11", "12", "16", "16")), 
class = "data.frame", row.names = c(NA, 
-8L))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69413113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档