在 R 中合并每小时温度数据
Conglomorating hourly temperature data in R
我的目标是找到每日最低和最高温度并将它们添加到数据框中。我当前的数据框如下所示:
ROW DATE_TIME TEMP (DEG C)
1 5/1/1999 4.6
2 5/1/1999 3.8
3 5/1/1999 2.9
我正在尝试使用此数据获取每日温度范围,但我 运行 遇到的主要问题是 "non-standard" 日期。我使用的数据集有几千个数据点长,所以我想要一个代码,每 24 行执行一次 max-min 以获得每日温度变化。
谢谢!
如果您想使用 运行 window 来计算它,您可以使用函数 gtools::running()
并将 by()
和 width()
参数设置为 24 .
require(tidyverse)
require(gtools)
set.seed(123)
df <- data.frame(row = c(seq(1, 24*5, by = 1)),
date = as.Date(c(
rep(c("02/25/92"), 24),
rep(c("02/26/92"), 24),
rep(c("02/27/92"), 24),
rep(c("02/28/92"), 24),
rep(c("02/29/92"), 24)),
format = "%m/%d/%y"),
temp = rnorm(24*5, mean = 5, sd = 5))
#Function to calculate the min. and max. of a vector/column
MinMaxFunction <- function(x) {
return(data.frame(min = min(x, na.rm = TRUE),
max = max(x, na.rm = TRUE)))
}
#Calculating the running min. max.
dfRunningMean <- running(df$temp,
fun = MinMaxFunction,
by = 24,
width = 24) %>%
t() %>%
as.data.frame()
dfRunningMean
min max
1:24 -4.833086 13.93457
25:48 -3.433467 15.84478
49:72 -6.545844 15.25042
73:96 -1.103589 11.80326
97:120 -3.33971 15.93666
或者,您可以使用 tidyverse
方法来计算最小值/最大值。对于每个日期。
require(tidyverse)
df %>%
group_by(date) %>%
summarise(min = min(temp, na.rm = TRUE),
max = max(temp, na.rm = TRUE))
date min max
<date> <dbl> <dbl>
1 1992-02-25 -4.83 13.9
2 1992-02-26 -3.43 15.8
3 1992-02-27 -6.55 15.3
4 1992-02-28 -1.10 11.8
5 1992-02-29 -3.34 15.9
我的目标是找到每日最低和最高温度并将它们添加到数据框中。我当前的数据框如下所示:
ROW DATE_TIME TEMP (DEG C)
1 5/1/1999 4.6
2 5/1/1999 3.8
3 5/1/1999 2.9
我正在尝试使用此数据获取每日温度范围,但我 运行 遇到的主要问题是 "non-standard" 日期。我使用的数据集有几千个数据点长,所以我想要一个代码,每 24 行执行一次 max-min 以获得每日温度变化。
谢谢!
如果您想使用 运行 window 来计算它,您可以使用函数 gtools::running()
并将 by()
和 width()
参数设置为 24 .
require(tidyverse)
require(gtools)
set.seed(123)
df <- data.frame(row = c(seq(1, 24*5, by = 1)),
date = as.Date(c(
rep(c("02/25/92"), 24),
rep(c("02/26/92"), 24),
rep(c("02/27/92"), 24),
rep(c("02/28/92"), 24),
rep(c("02/29/92"), 24)),
format = "%m/%d/%y"),
temp = rnorm(24*5, mean = 5, sd = 5))
#Function to calculate the min. and max. of a vector/column
MinMaxFunction <- function(x) {
return(data.frame(min = min(x, na.rm = TRUE),
max = max(x, na.rm = TRUE)))
}
#Calculating the running min. max.
dfRunningMean <- running(df$temp,
fun = MinMaxFunction,
by = 24,
width = 24) %>%
t() %>%
as.data.frame()
dfRunningMean
min max
1:24 -4.833086 13.93457
25:48 -3.433467 15.84478
49:72 -6.545844 15.25042
73:96 -1.103589 11.80326
97:120 -3.33971 15.93666
或者,您可以使用 tidyverse
方法来计算最小值/最大值。对于每个日期。
require(tidyverse)
df %>%
group_by(date) %>%
summarise(min = min(temp, na.rm = TRUE),
max = max(temp, na.rm = TRUE))
date min max
<date> <dbl> <dbl>
1 1992-02-25 -4.83 13.9
2 1992-02-26 -3.43 15.8
3 1992-02-27 -6.55 15.3
4 1992-02-28 -1.10 11.8
5 1992-02-29 -3.34 15.9