首页 > 解决方案 > 如何指定“如果缺少两个变量”?

问题描述

在数据集“df”中,如果缺少任何变量或 check=0,我想将行标记为“bad”。

df <- data.frame(col1 = c(10, 11, NA, NA, 13),
                 col2 = c(9, NA, NA, 7, 6), check = c(1,0,1,0,0))

if (is.na(df$col1)|is.na(df$col2)|(df$check == 0)){

  df$flag = "bad"

  }else{

  df$flag == "good"
}

该代码不起作用,并且警告消息是:

警告消息:在 if (is.na(df$col1) | is.na(df$col2) | (df$check == 0)) { 中:条件的长度 > 1,并且只使用第一个元素

标签: rif-statementmissing-data

解决方案


我们可以做到这一点rowSums

df$flag <- ('Good', 'Bad')[(rowSums(is.na(df[1:2])) > 0 | df$check == 0) +1]

或使用ifelse

df$flag <- with(df, ifelse(is.na(col1)|is.na(col2)|check == 0, "bad", "good"))

推荐阅读