R中的padr:以用户定义的间隔填充
padr in R: padding at user-defined interval
我正在以 5 分钟的时间间隔处理时间序列数据。一些 5 分钟的时间序列丢失了。我想对数据集重新采样以用 NaN 值填充缺失的 5 分钟时间段。我在这里找到了有关如何处理此问题的重要信息:R: Insert rows for missing dates/times.
我创建了一个 data.frame "df" 和一个 POSIXct 时间序列列 "time"。
padr 包中的 pad 函数允许用户按分钟、小时、天等设置间隔
interval
The interval of the returned datetime variable. When NULL the the interval >will be equal to the interval of the datetime variable. When specified it can >only be lower than the interval of the input data. See Details.
padr 的 pad 功能将在我的 5 分钟数据上创建 1 分钟的间隔。如何设置我自己的用户定义间隔(例如 5 分钟)?
尝试使用函数填充到分钟,然后聚合到您想要的规格。然后这会导致自定义摘要
library(padr)
account <- data.frame(day = as.Date(c('2016-10-21', '2016-10-23', '2016-10-26')),
balance = c(304.46, 414.76, 378.98))
account %>%
pad('min') %>% ##pad to the minute
mutate(five_min = cut(day, "5 min")) %>% ##create new 'five_min' column
group_by(five_min) %>% ## group by the new col
summarise(ttl = sum(balance, na.rm=TRUE)) ##aggregate the new sum
# # A tibble: 1,441 × 2
# five_min ttl
# <fctr> <dbl>
# 1 2016-10-21 00:00:00 304.46
# 2 2016-10-21 00:05:00 0.00
# 3 2016-10-21 00:10:00 0.00
# 4 2016-10-21 00:15:00 0.00
# 5 2016-10-21 00:20:00 0.00
# 6 2016-10-21 00:25:00 0.00
# 7 2016-10-21 00:30:00 0.00
# 8 2016-10-21 00:35:00 0.00
# 9 2016-10-21 00:40:00 0.00
# 10 2016-10-21 00:45:00 0.00
# # ... with 1,431 more rows
虽然我无法使用我的数据格式(我没有帮助指定)得到 Pierre 对 运行 的解决方案,但我能够通过采用 Pierre 的策略选择 5- 来创建解决方案填充的 1 分钟间隔数据的分钟子集。我对这个新的 padr 库感到兴奋,并希望在未来添加更多功能。
我的策略如下:
library(padr)
library(zoo)
dfpad <- pad(df, interval = "min") #resample timeseries df to 1 min intervals
dfpadzoo <- zoo(dfpad,order.by = dfpad$time) #convert padded df to zoo timeseries
sensStart <- start(dfpadzoo) #first time in data using zoo function
sensEnd <- end(dfpadzoo) # last time in data using zoo function
nexttime <- df$time[2] #identify the time in the second data row
#determine time interval in minutes:
tint_min <- as.double(difftime(nexttime,sensStart, tz="UTC",units="mins"))
#Generate regularly-spaced time series from the start to end of data:
timeFill <- seq(from = as.POSIXct(sensStart, tz="UTC"),
to = as.POSIXct(sensEnd, tz="UTC"), by = 60*tint_min)
#Create subset of dfpad spaced at 5-minute intervals
sensdatazoo <- dfpadzoo[timeFill]
通过将 df 转换为 zoo 对象,我能够使用在 zoo 库中找到的其他时间序列功能。
新版本昨天登陆 CRAN。您现在可以在每个间隔中使用不同于 1 的单位
library(padr)
library(dplyr)
coffee %>% thicken("5 min") %>% select(-time_stamp) %>% pad()
我正在以 5 分钟的时间间隔处理时间序列数据。一些 5 分钟的时间序列丢失了。我想对数据集重新采样以用 NaN 值填充缺失的 5 分钟时间段。我在这里找到了有关如何处理此问题的重要信息:R: Insert rows for missing dates/times.
我创建了一个 data.frame "df" 和一个 POSIXct 时间序列列 "time"。
padr 包中的 pad 函数允许用户按分钟、小时、天等设置间隔
interval
The interval of the returned datetime variable. When NULL the the interval >will be equal to the interval of the datetime variable. When specified it can >only be lower than the interval of the input data. See Details.
padr 的 pad 功能将在我的 5 分钟数据上创建 1 分钟的间隔。如何设置我自己的用户定义间隔(例如 5 分钟)?
尝试使用函数填充到分钟,然后聚合到您想要的规格。然后这会导致自定义摘要
library(padr)
account <- data.frame(day = as.Date(c('2016-10-21', '2016-10-23', '2016-10-26')),
balance = c(304.46, 414.76, 378.98))
account %>%
pad('min') %>% ##pad to the minute
mutate(five_min = cut(day, "5 min")) %>% ##create new 'five_min' column
group_by(five_min) %>% ## group by the new col
summarise(ttl = sum(balance, na.rm=TRUE)) ##aggregate the new sum
# # A tibble: 1,441 × 2
# five_min ttl
# <fctr> <dbl>
# 1 2016-10-21 00:00:00 304.46
# 2 2016-10-21 00:05:00 0.00
# 3 2016-10-21 00:10:00 0.00
# 4 2016-10-21 00:15:00 0.00
# 5 2016-10-21 00:20:00 0.00
# 6 2016-10-21 00:25:00 0.00
# 7 2016-10-21 00:30:00 0.00
# 8 2016-10-21 00:35:00 0.00
# 9 2016-10-21 00:40:00 0.00
# 10 2016-10-21 00:45:00 0.00
# # ... with 1,431 more rows
虽然我无法使用我的数据格式(我没有帮助指定)得到 Pierre 对 运行 的解决方案,但我能够通过采用 Pierre 的策略选择 5- 来创建解决方案填充的 1 分钟间隔数据的分钟子集。我对这个新的 padr 库感到兴奋,并希望在未来添加更多功能。
我的策略如下:
library(padr)
library(zoo)
dfpad <- pad(df, interval = "min") #resample timeseries df to 1 min intervals
dfpadzoo <- zoo(dfpad,order.by = dfpad$time) #convert padded df to zoo timeseries
sensStart <- start(dfpadzoo) #first time in data using zoo function
sensEnd <- end(dfpadzoo) # last time in data using zoo function
nexttime <- df$time[2] #identify the time in the second data row
#determine time interval in minutes:
tint_min <- as.double(difftime(nexttime,sensStart, tz="UTC",units="mins"))
#Generate regularly-spaced time series from the start to end of data:
timeFill <- seq(from = as.POSIXct(sensStart, tz="UTC"),
to = as.POSIXct(sensEnd, tz="UTC"), by = 60*tint_min)
#Create subset of dfpad spaced at 5-minute intervals
sensdatazoo <- dfpadzoo[timeFill]
通过将 df 转换为 zoo 对象,我能够使用在 zoo 库中找到的其他时间序列功能。
新版本昨天登陆 CRAN。您现在可以在每个间隔中使用不同于 1 的单位
library(padr)
library(dplyr)
coffee %>% thicken("5 min") %>% select(-time_stamp) %>% pad()