【发布时间】:2019-01-10 16:08:10
【问题描述】:
我正在尝试对分组的数据框进行子集化,以便每个组最终得到一行。对于每个组,如果它具有特定值,我想对一行进行子集化,但如果不存在这样的行,那么我将对替代行进行子集化。
数据按年份和季节分组,我想将第 1 季组中的 Month == 2 行子集,第 2 季组中 Month == 4 的行子集,第 3 季组中 Month == 8 的行子集,并与第 4 季中的 Month == 10 保持一致。
如果没有符合要求的行,则季节组中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
【问题讨论】:
-
代替
==,对多个元素使用%in%
标签: r