Я пытаюсь создать подгруппу сгруппированных данных, чтобы у меня была одна строка для каждой группы. Для каждой группы я хотел бы поднастроить строку, если она имеет определенное значение, но если такой строки не существует, то я бы поднастроил альтернативную строку.
Данные сгруппированы по годам и сезонам, и я хотел бы задать строку с Month == 2
из группы 1-го сезона, строку с Month == 4
из 2-го сезона, строку с Month == 8
из 3-го сезона, и строка с Month == 10
из 4-го сезона.
Если нет строки с требованиями, то строка в группе сезонов с наибольшим value
будет подмножеством. Например, из строк 4 и 5 строка 4 будет подмножеством.
Year Season Month value
2012 1 1 3.4
2012 1 2 6.1
2012 1 3 9.0
2012 2 5 4.4
2012 2 6 1.2
2012 3 8 4.9
2012 4 10 2.7
2013 1 3 8.3
2013 1 3 2.4
2013 2 4 7.0
2013 3 7 12.1
2013 3 8 5.7
2013 4 10 6.3
2013 4 11 3.3
Желаемый вывод:
Year Season Month value
2012 1 2 6.1
2012 2 5 4.4
2012 3 8 4.9
2012 4 10 2.7
2013 1 3 8.3
2013 2 4 7.0
2013 3 8 5.7
2013 4 10 6.3
Я попробовал следующий код, но не мог понять, как включить мое альтернативное требование в тот же самый бит кода (который, я думаю, потребует if
и else if
?)
df %>%
group_by(Year, Season) %>%
slice(which(Month == 2 | Month == 4 | Month == 8 | Month == 10))
#slice(which.max(value)) #selects row with largest value in each group