R - 基于日期列使用 group_by 进行平均计算?
R - Mean calculation using group_by based on Date column?
*在 posting 之前,我经历了这个 post,但它不适用于我的数据中的日期格式:
*
-------------------------------------------- ----------------------
我有:
我有一个包含两列(即 "Date" 和 "Average")的数据框,其中包含 5 年的日平均降水量。
这是这个数据框的头部和尾部:
> head(years_nc)
Date Average
1 2010-01-01 0.00207909
2 2010-01-02 0.00207909
3 2010-01-03 0.00207909
4 2010-01-04 0.00207909
5 2010-01-05 0.00207909
6 2010-01-06 0.00207909
> tail(years_nc)
Date Average
3334271 2014-12-26 0.004983558
3334272 2014-12-27 0.004983558
3334273 2014-12-28 0.004983558
3334274 2014-12-29 0.004983558
3334275 2014-12-30 0.004983558
3334276 2014-12-31 0.004983558
为了让事情更清楚,你可以下载这个数据框:
https://www.dropbox.com/s/7wozzxvu6uckqsu/MyData.csv?dl=1
我的目标:
我试图分别计算每年 "Average" 列的平均值。
这是我的代码:
library(dplyr)
library(lubridate)
years_nc %>%
group_by(Date) %>%
summarize(avg_preci = mean(Average, na.rm = TRUE))
它returns只有一个值:
>
avg_preci
1 0.00195859
但是我想让R:
(a) 每年做一个小组;
(b) 然后为我计算年平均降水量的平均值。
换句话说,我必须有5个平均值;每年一个值。
我的代码有什么错误?
谁能帮我解决这个问题?
谢谢。
你几乎是对的。首先确保您的 Date
列实际上是 date
。然后,当您进行分组时,仅通过 year
而不是通过数据框中的 ymd
进行分组。脚本可以修改如下。
years_nc$Date <- ymd(years_nc$Date)
years_nc %>%
group_by(year(Date)) %>%
summarize(avg_preci = mean(Average, na.rm = TRUE))
# #A tibble: 5 x 2
# `year(Date)` avg_preci
# <dbl> <dbl>
# 1 2010 0.00196
# 2 2011 0.00196
# 3 2012 0.00196
# 4 2013 0.00196
# 5 2014 0.00196
*在 posting 之前,我经历了这个 post,但它不适用于我的数据中的日期格式:
-------------------------------------------- ----------------------
我有:
我有一个包含两列(即 "Date" 和 "Average")的数据框,其中包含 5 年的日平均降水量。
这是这个数据框的头部和尾部:
> head(years_nc)
Date Average
1 2010-01-01 0.00207909
2 2010-01-02 0.00207909
3 2010-01-03 0.00207909
4 2010-01-04 0.00207909
5 2010-01-05 0.00207909
6 2010-01-06 0.00207909
> tail(years_nc)
Date Average
3334271 2014-12-26 0.004983558
3334272 2014-12-27 0.004983558
3334273 2014-12-28 0.004983558
3334274 2014-12-29 0.004983558
3334275 2014-12-30 0.004983558
3334276 2014-12-31 0.004983558
为了让事情更清楚,你可以下载这个数据框:
https://www.dropbox.com/s/7wozzxvu6uckqsu/MyData.csv?dl=1
我的目标:
我试图分别计算每年 "Average" 列的平均值。
这是我的代码:
library(dplyr)
library(lubridate)
years_nc %>%
group_by(Date) %>%
summarize(avg_preci = mean(Average, na.rm = TRUE))
它returns只有一个值:
>
avg_preci
1 0.00195859
但是我想让R:
(a) 每年做一个小组;
(b) 然后为我计算年平均降水量的平均值。
换句话说,我必须有5个平均值;每年一个值。
我的代码有什么错误?
谁能帮我解决这个问题?
谢谢。
你几乎是对的。首先确保您的 Date
列实际上是 date
。然后,当您进行分组时,仅通过 year
而不是通过数据框中的 ymd
进行分组。脚本可以修改如下。
years_nc$Date <- ymd(years_nc$Date)
years_nc %>%
group_by(year(Date)) %>%
summarize(avg_preci = mean(Average, na.rm = TRUE))
# #A tibble: 5 x 2
# `year(Date)` avg_preci
# <dbl> <dbl>
# 1 2010 0.00196
# 2 2011 0.00196
# 3 2012 0.00196
# 4 2013 0.00196
# 5 2014 0.00196