【发布时间】:2020-01-28 13:40:36
【问题描述】:
*在发布之前,我浏览了这篇文章,但它不适用于我的数据中的日期格式:
Using R & dplyr to summarize - group_by, count, mean, sd*
----------------------------------------------- ----------------------
我有什么:
我有一个包含两列(即“日期”和“平均值”)的数据框,其中包含 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
我的目标:
我正在尝试分别计算每年“平均”列的平均值。
这是我的代码:
library(dplyr)
library(lubridate)
years_nc %>%
group_by(Date) %>%
summarize(avg_preci = mean(Average, na.rm = TRUE))
它只返回一个值:
>
avg_preci
1 0.00195859
但我希望 R:
(a) 每年分组;
(b) 然后计算我每年平均降水量的平均值。
换句话说,我必须有 5 个平均值;每年一个值。
我的代码有什么错误?
有人可以帮我解决这个问题吗?
谢谢。
【问题讨论】:
-
你只是在
years_nc %>% group_by(year(Date)) %>% summarize(avg_preci = mean(Average, na.rm = TRUE))中错过了year(Date) -
编写的代码至少应该为您提供每个日期的平均值(尽管不是每年)。您是否有可能将旧的 plyr 包与 dplyr 一起加载?尝试将您的呼叫更改为
summarize()到dplyr::summarize(),看看它现在是否尊重您的日期分组。 -
你们都是对的。使用@deepseefan 的答案中也反映的 cmets 是正确的。谢谢。