В настоящее время я работаю с большим набором данных, который записывает ежедневные данные в нескольких местах, и я хотел бы суммировать ежедневные данные, чтобы иметь один выход, дающий максимальный уровень предупреждения в этот день (категории красный / желтый / нет).
Рассмотрим следующую настройку:
location = c(rep("A", 4), rep("B", 4), rep("C", 4), rep("D",4) , rep("E", 4))
date = rep(c("19991230", "19991231", "20000101", "20000102"), 5)
warning = c("Red", "None", "None", "None", "Yellow", "None", "Red", "None", "Yellow", "Yellow", "None", "Yellow", "None", "None", "None", "None", "Yellow", "None", "None", "None")
data = data.frame(location, date, warning)
Я пытаюсь создать новый столбец, который будет показывать «Нет», если в каждый конкретный день не было предупреждений, «Желтый», если один или несколькопоявляется предупреждение желтого цвета (кроме случаев, когда в тот же день появляется одно или несколько «красных» предупреждений), и в этом случае выход «Красный» имеет приоритет.
Я рассмотрел использование агрегирования по дате, но я не уверен, какую функцию применять,Я также пытался зацикливаться на каждой дате, чтобы попытаться сосчитать предупреждения «Нет», чтобы хотя бы сузить их, но безуспешно. Возможно, мне нужно использовать ifelse и цикл for для дат? Бедные попытки ниже:
aggregate(data, by=date, FUN)
или
data <- data %>%
group_by(date) %>%
mutate(day_warning_type = case_when(
warning != "None" ~ TRUE, TRUE ~ FALSE
)) %>%
ungroup()
Надеюсь, кто-то может, по крайней мере, помочь мне в правильном направлении, так как я не добился большого прогресса, насколько мне трудно узнатькак работать с символьными переменными.