当year列在r中包含多个年份时,如何查找包含最大值及其相关年份的行



当"年份"列包含多个年份时,如何查找包含最大值及其关联年份的行。我的数据框包含了从2013年1月到2020年12月的月度河流流量数据。例如,如果我想找到包含2013年最大排放量的行,或者我想找出2013年的最大排放量和与特定最大排放量相关的日期(日期/月/年)。我该怎么做呢?在R ?

tbody> <<tr>
年份 排放量
1/1/201323
2/1/201345
——,
12/31/202080

我们可以将列转换为Date类,将year作为单独的列,做一个组by和slicemax

library(dplyr)
library(lubridate)
df1 %>%
group_by(year = year(mdy(Year))) %>%
slice_max(n = 1, order_by = Discharge) %>%
ungroup

与产出

# A tibble: 2 x 3
Year       Discharge  year
<chr>          <int> <dbl>
1 2/1/2013          45  2013
2 12/31/2020        80  2020

如果'Year'列中有多种格式,则使用parsedate中的parse_date

library(parsedate)
df1 %>%
group_by(year = year(parse_date(Year))) %>%
slice_max(n = 1, order_by = Discharge) %>%
ungroup

更新根据注释中的dput, 'Date'列已经在Date类中

df1 %>%
group_by(year= year(Date)) %>%
slice_max(n = 1, order_by = Discharge, with_ties = FALSE) %>%
ungroup

与产出

# A tibble: 1 x 3
Date       Discharge  year
<date>         <dbl> <dbl>
1 2018-06-07    0.0116  2018

数据
df1 <- structure(list(Year = c("1/1/2013", "2/1/2013", "12/31/2020"), 
Discharge = c(23L, 45L, 80L)), class = "data.frame", row.names = c(NA, 
-3L))

相关内容

  • 没有找到相关文章

最新更新