R 每组平均计数

R 每组平均计数,r,mean,R,Mean,我真的很接近,但我错过了最后一步,你能告诉我下面我需要改变什么吗 我的数据集(mydata)如下所示(缺少前几个条目): date\u daily station\u date air\u min air\u avg air\u max rain\u mm temp\u davg\u temp\u dmax\u temp\u dmin\u c date月数年 1 2006/01/01 NA NA NA 2006-01-01 2006 2 2006/01/02 NA NA NA 2006-01-0

我真的很接近,但我错过了最后一步,你能告诉我下面我需要改变什么吗

我的数据集(mydata)如下所示(缺少前几个条目):

date\u daily station\u date air\u min air\u avg air\u max rain\u mm temp\u davg\u temp\u dmax\u temp\u dmin\u c date月数年
1 2006/01/01 NA NA NA 2006-01-01 2006
2 2006/01/02 NA NA NA 2006-01-02 01 2006
3 2006/01/03 NA NA NA 2006-01-03 01 2006
4 2006/01/04 NA NA NA 2006-01-04 01 2006
5 2006/01/05 NA NA 2006-01-05 01 2006
2006年1月6日2006年1月6日2006年1月1日2006年1月06日
每日数据范围从2006年到2016年,因此我对月平均降雨量以及月平均降雨量>2mm的天数感兴趣

因此,我尝试了以下方法:

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
库(dplyr)
统计数据%group_按(月)%>%
总结(天/雨=长度(雨/毫米[!is.na(雨/毫米)]),
平均降雨量=平均值(降雨量mm,na.rm=真实值),
天数=总和(降雨量>2,不适用rm=真值),
p2mm=天(2mm/天(有雨*100)
这给了我以下信息:

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
#一个tible:12 x 5
月日平均降雨量日2mm p2mm
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
这是每月平均降雨量的正确数字,但它给出了所有1月份有雨的总天数(即304天),而不是1月份的平均天数,与降雨量>2mm的天数相同(即从2006年到2016年1月的所有月份中有148天。我想要的是每个月的平均数,而不是总数)

我相信这是一个简单的解决办法,但我不知道如何做到这一点? 如有任何建议,我们将不胜感激 干杯
Sandra

假设您拥有所有年份(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)
stats%分组依据(月)%>%
总结(天/雨=长度(雨毫米[!is.na(雨毫米)]/长度(唯一(年)),
平均降雨量=平均值(降雨量mm,na.rm=真实值),
天数=总和(降雨量>2,na.rm=真实值)/长度(唯一(年)),
p2mm=天(2mm/天(有雨*100)

这是一个快速解决办法。只要除以年数,你就得到了平均值。

你需要提供你的数据才能得到答案。请阅读。你的问题对我来说有点模糊。我更新了这个问题,我希望现在更清楚了。你试过用
sum
而不是
length
?天哪,今天我显然应该躲在家里这就是修复方法!谢谢Masoud!我遇到了长度问题,有没有其他只计算条目的函数?