【问题标题】:Average count per group每组平均数
【发布时间】:2017-08-15 04:22:04
【问题描述】:

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

我的数据集 (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 年,所以我对平均每月降雨量以及每月平均降雨量 > 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

这是每月平均降雨量的正确数字,但它给出了所有 1 月有雨的总天数(即 304 天),而不是 1 月份的平均数,与降雨量 > 2 毫米的天数(即从 2006 年到 2016 年 1 月的所有月份共有 148 天。我想要每月的平均值,而不是总数)。

我确信这很容易解决,但我不知道该怎么做? 任何建议表示赞赏 干杯 桑德拉

【问题讨论】:

  • 您需要出示您的数据才能获得答案。请阅读How to make a great reproducible example in R?。你的问题对我来说有点模糊。
  • 我更新了问题,希望现在更清楚了吗?
  • 你试过用sum代替length吗?

标签: r mean


【解决方案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)

这是一个快速修复。只需除以年数,就可以得到平均值。

【讨论】:

  • omg,今天我应该只是躲在家里,显然这是解决办法!谢谢马苏德!我遇到了长度问题,是否有另一个只计算条目的函数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 2017-03-05
  • 2020-04-01
  • 2021-11-08
相关资源
最近更新 更多