我正在自学R,并试图弄清楚如何正确地编写if,then语句。我有一个人口统计数据的df,我想根据婚姻状况创建一个变量来表示家庭中的最高学位。但是,如果是1、2、4、5或6,我希望使用任一照顾者的最高学历。
> 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。任何建议都非常感谢!!
if(ExcelData$marital = 0 | 3:7 )
hhHighestDegree <- (ExcelData$education)发布于 2021-10-02 00:36:35
if/else未矢量化。我们可以使用ifelse或创建一个逻辑向量,然后根据该逻辑向量将'education‘列的子集分配给一个新对象'hhHighestDegree’。
根据显示的代码,我们需要提取“教育”值,其中“婚姻”值是0或3:7。因此,我们可以使用%in%创建逻辑向量(与比较运算符(>,<,==)不同,%in%还将为NA值返回FALSE )。
i1 <- ExcelData$marital %in% c(0, 3:7)
hhHighestDegree <- ExcelData$education[i1]或者如果我们更喜欢在|中使用>
i1 <- with(ExcelData, (marital == 0| (marital >=3 & marital<=7)) &
!is.na(marital))
hhHighestDegree <- ExcelData$education[i1]数据
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))https://stackoverflow.com/questions/69413113
复制相似问题