Примечание. При этом все строки, где значение O3
равно максимальному значению этого дня, сохранятся. Если вы хотите только 1 на строку, вы можете использовать slice
или top_n
для этого.
library(tidyverse)
dat %>%
group_by(day = lubridate::date(date)) %>%
filter(O3 == max(O3)) %>%
ungroup %>%
select(date, O3, NOX, SO2, -day)
# A tibble: 3 x 4
date O3 NOX SO2
<dttm> <int> <int> <int>
1 1994-01-01 10:00:00 20 42 52
2 1994-02-01 08:00:00 42 10 4
3 1994-03-01 09:00:00 57 11 6
данные
dat <- structure(list(O3 = c(7L, 5L, 3L, 6L, 20L, 19L, 19L, 42L, 25L,
36L, 10L, 14L, 24L, 57L, 39L), NOX = c(14L, 18L, 18L, 24L, 42L,
7L, 6L, 10L, 17L, 29L, 1L, 2L, 4L, 11L, 34L), SO2 = c(29L, 30L,
29L, 35L, 52L, 11L, 16L, 4L, 26L, 13L, 6L, 5L, 4L, 6L, 11L),
date = structure(c(757404000, 757407600, 757411200, 757414800,
757418400, 760082400, 760086000, 760089600, 760093200, 760096800,
762501600, 762505200, 762508800, 762512400, 762516000), tzone = "UTC", class = c("POSIXct",
"POSIXt"))), class = "data.frame", row.names = c(NA, -15L
), .Names = c("O3", "NOX", "SO2", "date"))