我真的很接近,但我错过了最后一步,你能告诉我下面需要改变什么吗?
我的数据集(mydata)看起来像这样(缺少前几个条目):
date_daily station_date air_min air_avg air_max rain_mm temp_davg_c temp_dmax_c temp_dmin_c date months years
1 2006/01/01 <NA> <NA> <NA> <NA> NA NA NA NA 2006-01-01 01 2006
2 2006/01/02 <NA> <NA> <NA> <NA> NA NA NA NA 2006-01-02 01 2006
3 2006/01/03 <NA> <NA> <NA> <NA> NA NA NA NA 2006-01-03 01 2006
4 2006/01/04 <NA> <NA> <NA> <NA> NA NA NA NA 2006-01-04 01 2006
5 2006/01/05 <NA> <NA> <NA> <NA> NA NA NA NA 2006-01-05 01 2006
6 2006/01/06 <NA> <NA> <NA> <NA> NA NA NA NA 2006-01-06 01 2006
每日数据的范围从2006年到2016年,所以我对平均每月降雨以及每月平均降雨天数感兴趣&gt; 2毫米。
所以我尝试了以下内容:
library(dplyr)
stats <- mydata %>% group_by(months) %>%
summarise(days_w_rain = length(rain_mm[!is.na(rain_mm)]),
avg_rain = mean(rain_mm, na.rm=TRUE),
days_2mm = sum(rain_mm > 2, na.rm=TRUE),
p2mm = days_2mm / days_w_rain*100)
给了我以下内容:
# A tibble: 12 x 5
months days_w_rain avg_rain days_2mm p2mm
<chr> <int> <dbl> <int> <dbl>
1 01 304 11.8078520 148 48.684211
2 02 310 7.4946903 125 40.322581
3 03 334 9.2680090 156 46.706587
4 04 327 3.7469113 92 28.134557
5 05 310 1.6073032 39 12.580645
6 06 300 1.1322100 39 13.000000
7 07 310 0.6212226 25 8.064516
8 08 333 1.6641862 47 14.114114
9 09 308 4.2796169 71 23.051948
10 10 310 10.7842742 155 50.000000
11 11 300 18.4062900 189 63.000000
12 12 287 20.6697038 155 54.006969
这是每月平均降雨量的正确数字,但是它给出了所有降雨量(即304天)的Januaries的总天数,而不是1月份的平均值,与天降雨量> 2mm(即2006年1月至2016年1月份的148天。我想要的是每月的平均值,而不是总数)。
我确信这是一个简单的修复,但我不知道该怎么办? 任何建议表示赞赏 干杯 桑德拉
答案 0 :(得分:1)
假设您拥有所有年份的数据( 2006至2016 ),这将提供所需的输出:
stats <- mydata %>% group_by(months) %>%
summarise(days_w_rain = length(rain_mm[!is.na(rain_mm)]/length(unique(years))),
avg_rain = mean(rain_mm, na.rm=TRUE),
days_2mm = sum(rain_mm > 2, na.rm=TRUE)/length(unique(years)),
p2mm = days_2mm / days_w_rain*100)
这是一个快速修复。只需按年数除以平均值即可。