首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中某一列中缺失值的时间序列插值

R中某一列中缺失值的时间序列插值
EN

Stack Overflow用户
提问于 2017-11-30 21:43:04
回答 2查看 1.1K关注 0票数 1

我目前已经查看了imputeTS和zoo包,但它看不到当前数据是..

代码语言:javascript
复制
group/timeseries(character)
  1   2017-05-17 04:00:00
  1   2017-05-17 04:01:00
  1           NA
  1           NA
  1   2017-05-17 05:00:00
  1   2017-05-17 06:00:00
  2           NA
  2   2017-05-17 04:31:00
  2           NA
  2           NA
  2           NA
  2   2017-05-17 05:31:00

我想用插值时间序列填充NA,这样时间就是前后行的中点。另外,我必须指出,每个时间序列都属于一个组。这意味着每个组的时间都会重置。

为了更清楚,我将提供实际数据的图片

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2017-11-30 23:40:23

zoo包中的na.approx可以做到这一点,并且可以使用base中的tapply或data.table中的组操作在没有循环的情况下处理分组。

对于您的数据集

代码语言:javascript
复制
df <- read.table(text=c("
  group   timeseries
  1   '2017-05-17 04:00:00'
  1   '2017-05-17 04:01:00'
  1   NA
  1   NA
  1   '2017-05-17 05:00:00'
  1   '2017-05-17 06:00:00'
  2   NA
  2   '2017-05-17 04:31:00'
  2   NA
  2   NA
  2   NA
  2   '2017-05-17 05:31:00'
"), 
colClasses = c("integer", "POSIXct"),
header = TRUE)

编写函数强制向量到zoo对象,插值NAs,提取结果

代码语言:javascript
复制
library(zoo)
foo <- function(x) coredata(na.approx(zoo(x), na.rm = FALSE))

在基数R中使用tapply将foo应用于每个组的示例

代码语言:javascript
复制
df2 <- df #make a copy
df2$timeseries <- do.call(c, tapply(df2$timeseries, INDEX = df2$group, foo))

在data.table中使用group by将foo应用于每个组的示例

代码语言:javascript
复制
library(data.table)
DT <- data.table(df)
DT[, timeseries := foo(timeseries), by = "group"]
票数 1
EN

Stack Overflow用户

发布于 2017-12-02 09:18:19

imputeTS和zoo不接受字符或时间戳作为其插值函数的输入。(通常插入字符没有意义)

但是您可以将字符作为输入输入到zoo的na.locf函数中。(使用此函数将结转最后一个观察值)

您的任务的最佳解决方案应该如下所示(我假设您提供的日期为POSIX.ct)

代码语言:javascript
复制
# Perform the imputation on numeric input
temp <- imputeTS::na_interpolation( as.numeric ( input ) )

# Transform the numeric values back to dates
as.POSIXct(temp, origin = "1960-01-01", tz = "UTC")

第一行中的"input“是带有POSIX.ct时间戳的向量。第二行中的原点和tz (时区)设置必须根据时间戳进行设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47574929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档