首页 > 解决方案 > 如何在庞大的数据集中找到某个标准的天数?

问题描述

我正在处理 30 年的天气数据,并且我有一个温度值列表:

tempC = c(-2,-3,-2,.......-5)这些是11322 days(30 年中的天数)的温度值。现在,我想知道每年有多少天在哪里temperature > 30degCYear1 = 2001, Year30 = 2031

我如何考虑闰年以及如何获得正确答案一直让我发疯。

非常感谢任何帮助!谢谢~

标签: r

解决方案


假设您有日期并且可以获得年份,则使用 dplyr 的语法将是:

library(dplyr)

df %>% group_by(year) %>% filter(tempC > 30)

df您的数据框在哪里,year是具有 2001、...、2030 等值的列,最后tempC是具有温度值的列。

请查看以下内容,了解如何从日期中提取年份,并在需要时生成 2001 年 1 月 1 日至 2031 年 12 月 31 日之间的日期。


示例数据框:

  tempC       date
1    30 2012-12-29
2    27 2012-12-30
3    41 2012-12-31
4    22 2013-01-01
5    32 2013-01-02
6    44 2013-01-03
7    33 2013-01-04
8    22 2013-01-05

使用获取年份列lubridate

library(lubridate)

df$year <- year(ymd(df$date))

你现在得到:

  tempC       date year
1    30 2012-12-29 2012
2    27 2012-12-30 2012
3    41 2012-12-31 2012
4    22 2013-01-01 2013
5    32 2013-01-02 2013
6    44 2013-01-03 2013
7    33 2013-01-04 2013
8    22 2013-01-05 2013

运行上面的dplyr代码解决方案,最终输出:

  tempC date        year
  <dbl> <date>     <dbl>
1    41 2012-12-31  2012
2    32 2013-01-02  2013
3    44 2013-01-03  2013
4    33 2013-01-04  2013


如果您只有温度值而不是日期值,则可以使用以下方法生成它们:

df$date <- seq(as.Date('2001-01-01'), by = 'day', len = 11322)

这将在 2001 年 1 月 1 日至 2031 年 12 月 31 日之间创建日期。


推荐阅读