r - 如何在庞大的数据集中找到某个标准的天数?
问题描述
我正在处理 30 年的天气数据,并且我有一个温度值列表:
tempC = c(-2,-3,-2,.......-5)
这些是11322 days
(30 年中的天数)的温度值。现在,我想知道每年有多少天在哪里temperature > 30degC
。
Year1 = 2001, Year30 = 2031
我如何考虑闰年以及如何获得正确答案一直让我发疯。
非常感谢任何帮助!谢谢~
解决方案
假设您有日期并且可以获得年份,则使用 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 日之间创建日期。
推荐阅读
- expression - 使用下拉菜单限制 Spotfire 数据
- python - Numpy就地转置
- kubernetes - Kubernetes 从另一个 Pod 中查找 Pod IP
- time - 将 5 分钟数据以季度数据作为第一行
- node.js - 根据数字缩放图像宽度和高度
- java - 如何将 org.json.simple.jsonobject 转换为 java 对象
- xmlhttprequest - XHR 到非 SSL IP
- ios - 以编程方式位于单元格中心的按钮
- types - 在 Python 函数中强制执行类型检查
- .htaccess - 需要有关 htaccess 漂亮网址的帮助