Определение функции в R с помощью операторов if - PullRequest
1 голос
/ 05 мая 2020

Я хочу создать новый столбец DELAY_CAUSE. Этот столбец должен содержать NA, если ARR_DELAY равно 0 или меньше; "KNOWN", если сумма CARRIER_DELAY, WEATHER_DELAY, SECURITY_DELAY и LATE_AIRCRAFT_DELAY как минимум равна ARRIVAL_DELAY, и "UNKNOWN" в противном случае.

Мой код:

delay_reason <- function() {
  if ARR_DELAY <= 0 {
    return("NA")
  } else if(sum(CARRIER_DELAY, WEATHER_DELAY, SECURITY_DELAY, LATE_AIRCRAFT_DELAY) >= ARRIVAL_DELAY) {
    return("KNOWN")
  } else {
    return("UNKNOWN")
  }
}

df_flights$CAUSE_DELAY <- delay_reason

Однако я получаю две ошибки:

первая:

Error: no function to return from, jumping to top level

вторая:

Error: unexpected '}' in "  }"

Как я могу исправить, что моя функция работает?

Заранее спасибо!

1 Ответ

1 голос
/ 05 мая 2020

Используйте функцию ifelse для векторизованного решения:

df$delay_reason <- ifelse(df$ARR_DELAY <= 0, "NA",
                       ifelse(df$CARRIER_DELAY + df$WEATHER_DELAY + df$SECURITY_DELAY +
                           df$LATE_AIRCRAFT_DELAY >= df$ARRIVAL_DELAY, "KNOWN", "UNKNOWN"))
...