我正在尝试对已分组的数据帧进行子集处理,以便最后为每个组添加一行。对于每个组,我希望对具有特定值的行进行子集化,但是如果不存在这样的行,那么我将对另一行进行子集化。
数据按年份和季节分组,我想将第1季度组中的Month == 2
行作为子集,将第2季度中的Month == 4
行作为子集,将{{1 }}从第3季开始,并与Month == 8
从第4季开始。
如果没有要求的行,则季节组中Month == 10
最大的行将是子集。例如,在第4行和第5行中,第4行将是子集。
value
所需的输出是:
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
答案 0 :(得分:2)
检查此解决方案:
data %>%
mutate(cond = case_when(
Season == 1 & Month == 2 ~ 1,
Season == 2 & Month == 4 ~ 1,
Season == 3 & Month == 8 ~ 1,
Season == 4 & Month == 10 ~ 1,
TRUE ~ 0
)) %>%
group_by(Year, Season) %>%
arrange(desc(cond), desc(Value)) %>%
slice(1) %>%
ungroup()