R中按组月的平均温度

Posted

技术标签:

【中文标题】R中按组月的平均温度【英文标题】:Mean Temperature by group month in R 【发布时间】:2020-12-30 18:42:28 【问题描述】:

我正在尝试使用以下代码计算 1988 年至 2020 年间每日记录的每月平均温度:

(Temperature_year_month <- (na.omit(database_PE_na) %>% group_by(month) %>% summarise(mean_temp_monthYear = mean(Air.Temp.Mean))))

我得到了以下结果,我在 excel 中检查了它,它似乎是正确的:

# A tibble: 12 x 2
   month mean_temp_monthYear
   <dbl>               <dbl>
 1     1                11.4
 2     2                13.5
 3     3                17.2
 4     4                21.2
 5     5                26.0
 6     6                31.0
 7     7                33.3
 8     8                32.5
 9     9                29.1
10    10                22.4
11    11                15.4
12    12                10.7

但是,当我仅在 7 月份(月份 =7)执行此操作时。我得到了不同的结果:

(Temperature_year_month <- (na.omit(database_PE_na) %>% group_by(month=7) %>% summarise(mean_temp_monthYear = mean(Air.Temp.Mean))))
  month mean_temp_monthYear
  <dbl>               <dbl>
1     7                22.0

有人可以向我解释为什么会发生这种情况¿

【问题讨论】:

问题可能是na.omit()。而是尝试使用filter(!is.na(Air.Temp.Mean)),然后计算平均值! 【参考方案1】:

我们可以使用data.table 方法

library(data.table)
setDT(database_PE_na)[month == 7, 
    .(mean_temp_monthYear = mean(Air.Temp.Mean, na.rm = TRUE))]

【讨论】:

【参考方案2】:

为了比较,使用== 而不是=

如果您想获得一个月的mean,请使用filter 而不是group_by

mean 具有 na.rm 参数,可以将其设置为 TRUE 以忽略 NA 值,而不是使用 na.omit 并删除整个行。

使用:

library(dplyr)

Temperature_year_month <- database_PE_na %>% 
                              filter(month==7) %>% 
                              summarise(mean_temp_monthYear = mean(Air.Temp.Mean, na.rm = TRUE))

【讨论】:

如果我想在过滤器(月==7)之外添加一个 group_by(年)? 您可以在filter之后添加group_by(Year)

以上是关于R中按组月的平均温度的主要内容,如果未能解决你的问题,请参考以下文章

在R中按组应用滚动平均值

如何在ggplot的箱线图中按组绘制平均值

如何从 sql 中的 2 个表中按组聚合和计算平均值?

在SQL中按组计算移动平均数

有没有办法使用聚合命令按组计算不对称平均值(例如从百分位数 0.05 到 0.5)? R-工作室

为data.frame中的多个变量按组计算平均值和标准差