#r #dplyr
#r #dplyr
Вопрос:
Я хотел бы перекодировать переменную в соответствии с ответами во фрейме данных df. Эта переменная равна 1, если задача занимает менее 30 минут, и равна 0, если дольше 30 минут. Существует вероятность того, что в моих данных есть какие-то случайные ошибки. В случае, если не все ответы из фрейма данных df используются в моей функции case_when(), я хотел бы выписать ошибку типа: «наблюдение «случайная ошибка» не использовалось в вашей функции case_when (). Есть идеи, как это решить? Я думал о unique(df $ col1), а затем как-то сравнить с наблюдениями, используемыми в функции case_when() . Но я понятия не имею, как это сделать в dplyr::transmute …
library(dplyr)
df <- data.frame(col1 = c("<30min", "31-60min", "61-120min", ">120min", NA, "random error"))
df2 <- df %>%
transmute(xxx = case_when(
col1 == "<30min" ~ 1,
col1 == "31-60min" | col1 == "61-120min" | col1 == ">120min" ~ 0,
TRUE ~ NA_real_)
)
)
df2
Ответ №1:
Вместо того, чтобы делать mutiple ==
, мы можем использовать %in%
library(dplyr)
df %>%
transmute(xxx = case_when(col1 == "<30min" ~ 1,
col1 %in% c("31-60min", "61-120min", ">120min") ~ 0,
TRUE ~ NA_real_))
Комментарии:
1. хороший момент, не отвечает на мой вопрос, но спасибо
![]()
2. @titeuf можете ли вы обновить свой пост с ожидаемым результатом. Спасибо