Как указать «если две переменные отсутствуют»? - PullRequest
0 голосов
/ 18 мая 2018

В наборе данных «df» я хочу отметить строки как «плохие», если какая-либо переменная отсутствует или check = 0.

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"
}

Код не работает, и появляется предупреждающее сообщение:

Предупреждающее сообщение: In if (is.na (df $ col1) | is.na (df $ col2) | (df $ check == 0)) {: условие имеет длину> 1, и будет использоваться только первый элемент

1 Ответ

0 голосов
/ 18 мая 2018

Мы можем сделать это с 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"))
...