嵌套的if-else语句,仅对第一个条件进行测试

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

我有一个数据集“ cipe”,如果满足以下任何条件“ htn”,“ sle”,“ apls”,“糖尿病”,“ ckd”,则尝试创建一个新变量“ case”

我正在使用的代码是:

cipe <- mutate(cipe, case == ifelse(htn == 1, "1",
                                ifelse(sle == 1, "1",
                                       ifelse(apls == 1, "1",
                                              ifelse(diabetes == 1, "1",
                                                     ifelse(ckd == 1, "1", "0"))))))

我的数据集有〜840k观测值,因此发布是不可行的,但是当我运行此代码时,新的“ case”变量中的“ 1”数等于“ htn”中的“ 1”数”((应该更高),因此其他测试未进行评估。任何帮助都会很棒。谢谢

r if-statement dplyr statistics
1个回答
0
投票

[我们可以对数据集'cipe'的列进行子集化,通过与1进行比较来创建逻辑矩阵,使用rowSums检查其是否大于0,并通过+as.integer将逻辑转换为二进制)>

+(rowSums(cipe[c('sle', 'apls', 'diabetes', 'ckd')] == 1) > 0)

或另一个选项是Reduce|

+(Reduce(`|`, lapply(cipe[c('sle', 'apls', 'diabetes', 'ckd')], `==`, 1)))
© www.soinside.com 2019 - 2024. All rights reserved.