当"年份"列包含多个年份时,如何查找包含最大值及其关联年份的行。我的数据框包含了从2013年1月到2020年12月的月度河流流量数据。例如,如果我想找到包含2013年最大排放量的行,或者我想找出2013年的最大排放量和与特定最大排放量相关的日期(日期/月/年)。我该怎么做呢?在R ?
年份 | 排放量 | 1/1/2013 | 23 |
---|---|
2/1/2013 | 45 |
—— | , |
12/31/2020 | 80 |
我们可以将列转换为Date类,将year
作为单独的列,做一个组by和slice
的max
行
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))