如何按特定行分组并计算每列的平均值?

时间:2021-07-10 01:55:45

标签: r dataframe

基本上我想按天对我的值进行分组,我想计算每天每个站点(ACO、AJM 等)的平均值,忽略空值。

这是我的数据框的头部:

D

其中“FECHA”是一天,“HORA”是每一天的小时。

我目前正在尝试这样做:

 FECHA     HORA   ACO   AJM   ATI   BJU
01/01/2019    1  -99.0 -99.0 -99.0 -99.0
01/01/2019    2  -99.0 -99.0 -99.0 -99.0
01/01/2019    3  -99.0 -99.0 -99.0 -99.0
01/01/2019    4  1.5   0.1   0.9   1.0
01/01/2019    5  1.2   0.1   0.6   1.3
01/01/2019    6  1.0   0.1   1.0   1.0

但 RStudio 一直告诉我“无效的 'dims'”或 na.rm 不正确。

如何按天(每 24 行)对所有值进行分组并计算当天每列的平均值,而忽略空值 (-99)?

2 个答案:

答案 0 :(得分:0)

您可以使用 across -

library(dplyr)

mdiaria2019CO  <- datos2019CO %>% 
                    group_by(FECHA) %>% 
                    summarise(across(ACO:BJU, ~mean(.[. != -99])))

#  FECHA        ACO   AJM   ATI   BJU
#  <chr>      <dbl> <dbl> <dbl> <dbl>
#1 01/01/2019  1.23   0.1 0.833   1.1

.[. != -99] 将忽略由 -99.0 表示的缺失值。

答案 1 :(得分:0)

我们也可以这样

library(dplyr)
mdiaria2019CO <- aggregate(.~ FECHA, datos2019CO[-2], FUN = function(x)
              mean(x[x != -99]))