R中的数据缺失-如何跳过信息缺失的日子分组?

佛朗哥·格罗索(Franco Grosso)

我有每小时的温度测量值,我希望仅计算完整(即24个测量)天的平均每天值。不完整的日子将被总结为“ NA”。

我每年,每月和每天将这些值分组在一起,然后调用summary()。
我遗失了三个月的数据,这在我的ggplot函数中显得空白,而我想在剩下的事情中实现这些。问题在于,当我调用summarize()计算我的值的平均值时,也会调用只有1或2个测量值的天。只有那些具有所有缺失值(24)的值才显示为“ NA”。

                   Date TempUrb  TempRur       UHI
1   2011-03-21 22:00:00    10.1 11.67000 -1.570000
2   2011-03-21 23:00:00     9.9 11.67000 -1.770000
3   2011-03-22 00:00:00    10.9 11.11000 -0.210000
4   2011-03-22 01:00:00    10.7 10.56000  0.140000
5   2011-03-22 02:00:00     9.7 10.00000 -0.300000
6   2011-03-22 03:00:00     9.5 10.00000 -0.500000
7   2011-03-22 04:00:00     9.4  8.89000  0.510000
8   2011-03-22 05:00:00     8.4  8.33500  0.065000
9   2011-03-22 06:00:00     8.2  7.50000  0.700000

AvgUHI <- UHI %>%  group_by(year(Date), add = TRUE) %>% 
  group_by(month(Date), add = TRUE) %>%
  group_by(day(Date), add = TRUE, .drop = TRUE) %>%
  summarize(AvgUHI = mean(UHI, na.rm = TRUE))

# A tibble: 2,844 x 4
# Groups:   year(Date), month(Date) [95]

   `year(Date)` `month(Date)` `day(Date)`  AvgUHI
        <int>         <int>       <int>   <dbl>
1476    2015             4       4     0.96625000
1477    2015             4       5     -0.11909722
1478    2015             4       6     -0.60416667
1479    2015             4       7     -0.92916667
1480    2015             4       8     NA
1481    2015             4       9     NA

AvgUHI<- AvgUHI %>%  group_by(`year(Date)`, add = TRUE) %>% 
  group_by(`month(Date)`, add = TRUE) %>%
  summarize(AvgUHI= mean(AvgUHI, na.rm = TRUE))

# A tibble: 95 x 3
# Groups:   year(Date) [9]
   `year(Date)` `month(Date)`  AvgUHI
          <int>         <int>   <dbl>
 50        2015             4   0.580887346 
 51        2015             5   0.453815051
 52        2015             6   0.008479618

正如您在决赛桌上方看到的那样,我的平均成绩为04-2015,而我缺少该月的数据(第二张表上的示例显示的是08-09/04/2015)。当我计算AvgUHI并且缺少每小时数据时,也会发生同样的情况。

我只是想在最后一张桌子上看到04-2015的AvgUHI是NA。

例如:我的图表1

瑞·巴拉达斯(Rui Barradas)

以下将给出一个按天汇总的数据框,其中只有整整几天(含4个观测值)不是NA然后,您可以按月分组以获取最终数据框。

UHI %>%
  mutate(Day = as.Date(Date)) %>%
  group_by(Day) %>%
  mutate(n = n(), tmpUHI = if_else(n == 24, UHI, NA_real_)) %>%
  summarize(AvgUHI = mean(tmpUHI)) %>%
  full_join(data.frame(Day = seq(min(.$Day), max(.$Day), by = "day"))) %>%
  arrange(Day) -> AvgUHI

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章