【发布时间】:2016-12-02 23:28:44
【问题描述】:
我正在尝试提取 1950 年至 2015 年间几个测量站每年的年平均降雨量。降雨数据集由每日测量值组成。
在计算每个站点的年平均值之前,我需要过滤数据,这样每个月必须有 >15 天的数据。
如何在 R 中做到这一点?
让这成为一个工作示例:
id<-rep(c("Station_1","Station_2","Station_3"),length(1),each=1080)
year<-rep(c(1950:1952),length(1:3),each=360)
month <- rep(c(1:12),length(1:9),each=30)
day <- rep(c(1:30),length(1:108))
value<-runif(3240, min=0, max=10)
df<-data.frame(cbind(id,year,month,day,value))
我尝试了类似的方法:
result<-df %>%
group_by(id,year,month) %>%
summarise(No._of_days=n(),mean_month=mean(value))
result<-result[!(result$No._of_days<15),]
result<-result %>%
group_by(id,year) %>%
summarise(No._of_months=n(),mean_year=mean(mean_month))
但是,这会导致错误的解决方案,因为我正在“从平均值中取平均值”。
感谢您的建议。
【问题讨论】:
-
请停止使用
data.frame(cbind(...))。data.frame()就足够了。看看?data.frame。 -
感谢 Sathish、aichao、sebolus 和 NJBurgo 快速而正确的回复 - 非常感谢您的帮助!所有解决方案都有效,但我会坚持使用 aichao,因为我最喜欢使用 dplyr。很抱歉错误地制定了数据框 - 我现在将“按原样”保留,因为这里的每个人都对如何正确构建它添加了很好的评论。