Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中:如何按天根据某列中的最大值聚合整行?_R - Fatal编程技术网

在R中:如何按天根据某列中的最大值聚合整行?

在R中:如何按天根据某列中的最大值聚合整行?,r,R,以下是我的数据集示例: date O3 NOX SO2 01/01/1994 06:00 7 14 29 01/01/1994 07:00 5 18 30 01/01/1994 08:00 3 18 29 01/01/1994 09:00 6 24 35 01/01/1994 10:00 20 42 52 01/02/1994 06:00 19 7 11 01/02/1994 07:00

以下是我的数据集示例:

date                O3  NOX SO2
01/01/1994 06:00    7   14  29
01/01/1994 07:00    5   18  30
01/01/1994 08:00    3   18  29
01/01/1994 09:00    6   24  35
01/01/1994 10:00    20  42  52
01/02/1994 06:00    19  7   11
01/02/1994 07:00    19  6   16
01/02/1994 08:00    42  10  4
01/02/1994 09:00    25  17  26
01/02/1994 10:00    36  29  13
01/03/1994 06:00    10  1   6
01/03/1994 07:00    14  2   5
01/03/1994 08:00    24  4   4
01/03/1994 09:00    57  11  6
01/03/1994 10:00    39  34  11
使用R,我要做的是根据每天给定列中的最大值聚合或子集整行,在本例中,选择每天包含最大值的整行

我的代码只汇总O3列和日期,但删除记录的小时

加总:

agg.df%
分组单位(日期)%>%
总结(O3=最大值(var))

我想得到这样的东西:

date             O3 NOX SO2
01/01/1994 10:00 20 42  52
02/01/1994 08:00 42 10  4 
03/01/1994 09:00 57 11  6
...
其中,最终子集包括整行,最大值为O3/天


非常感谢。

注意:这将保留
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
库(tidyverse)
dat%>%
分组人(日期=润滑油::日期(日期))%>%
过滤器(O3==最大值(O3))%>%
解组%>%
选择(日期、O3、NOX、SO2、-天)
#一个tibble:3x4
日期O3 NOX SO2
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考虑使用
ave
计算最大O3,然后相应细分:

dat$Max_O3 <- with(dat, ave(O3, as.Date(date), FUN=max))

subset(dat, O3 == Max_O3)
#    O3 NOX SO2                date Max_O3
# 5  20  42  52 1994-01-01 10:00:00     20
# 8  42  10   4 1994-02-01 08:00:00     42
# 14 57  11   6 1994-03-01 09:00:00     57

dat$Max\uO3很高兴听到!别忘了说话的方式!
dat$Max_O3 <- with(dat, ave(O3, as.Date(date), FUN=max))

subset(dat, O3 == Max_O3)
#    O3 NOX SO2                date Max_O3
# 5  20  42  52 1994-01-01 10:00:00     20
# 8  42  10   4 1994-02-01 08:00:00     42
# 14 57  11   6 1994-03-01 09:00:00     57