我想对 R 中的多个表从原始 5 到 1 秒的间隔线性插值列“日期”、“时间”和“温度”:

老的:

date         time     temp
1 22.05.11 16:00:00 23.653
2 22.05.11 16:00:05 23.541
...

新的:
date         time     temp
1 22.05.11 16:00:00 23.653
2 22.05.11 16:00:01 23.631
3 22.05.11 16:00:02 23.609
...

我怎样才能做到这一点?
谢谢你的帮助。

最佳答案

使用 na.approx 包中的 na.spline 和/或 zoo 很容易做到这一点。

# example data
set.seed(21)
z <- zoo(23+runif(10), seq(Sys.time(),length.out=10,by=5))
# merge your data with an empty zoo object that has an index value for
# every period you're interested in.
y <- merge(z, zoo(order.by=seq(start(z), end(z), by=1)))
xa <- na.approx(y)
xs <- na.spline(y)
plot(merge(xa,xs))

# To convert your existing data.frame to a zoo object:
z <- zoo(Data$temp,
  as.POSIXct(paste(Data$date, Data$time), format="%d.%m.%y %H:%M:%S"))
y <- merge(z, zoo(order.by=seq(start(z), end(z), by=1)))
xa <- na.approx(y)
xs <- na.spline(y)
plot(merge(xa,xs))
# Convert back to data.frame
dfxa <- data.frame(date=format(index(xa), "%d.%m.%y"),
                   time=format(index(xa), "%H:%M:%S"), temp=coredata(xa))

关于r - 插入多个表的时间序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6520799/

10-15 01:33