【问题标题】:r two xts operationsr 两个 xts 操作
【发布时间】:2015-04-21 17:25:33
【问题描述】:

两个小时的时间序列 xts1 和 xts2,xts1 有一些缺失的时间。

xts1
time                   speed power
2010-01-01 00:00:00     0.1  1.1
2010-01-01 01:00:00     0.2  1.2
2010-01-01 05:00:00     0.2  1.2
.....

xts2
time                   speed power
2010-01-01 00:00:00     0.1  1.1
2010-01-01 01:00:00     0.2  1.2
2010-01-01 02:00:00     0.2  1.2
.....

当将它们合并到一个文件中时(获取速度的平均值,并根据相同的时间戳求和),得到不符合数组的错误。使用的命令是:

hourly.data.table = data.table (time = time(xts1), meanspeed=    (coredata(xts1$speed)+coredata(xts2$speed))/2, power= coredata(xts1$power)+coredata(xts2$power))

如何按时间进行这种组合?提前致谢。

【问题讨论】:

  • 请提供一个可重现的例子stackoverflow.com/questions/5963269/…
  • 这个想法是结合两个不同维度的时间序列(由于缺少时间戳)。谢谢。
  • 我明白你想要什么,错误可能是由于不同的尺寸。您可能需要merge 数据集。 xts1 和 xts2 看起来像 data.frame 而不是 xts 对象
  • 谢谢。有没有我可以使用的命令,所以合并将基于来自 xts1 或 xts2 的现有时间戳?
  • 我发布了一个解决方案,看看是否有帮助

标签: r sum xts


【解决方案1】:

试试

library(xts)
xts1 <- xts(df1[-1], order.by = as.POSIXct(df1$time))
xts2 <- xts(df2[-1], order.by = as.POSIXct(df2$time))
res <- xts1+xts2
res[,1] <- res[,1]/2
res
#                     speed power
#2010-01-01 00:00:00   0.1   2.2
#2010-01-01 01:00:00   0.2   2.4

数据

df1 <- structure(list(time = c("2010-01-01 00:00:00", 
"2010-01-01 01:00:00", 
"2010-01-01 05:00:00"), speed = c(0.1, 0.2, 0.2), power = c(1.1, 
1.2, 1.2)), .Names = c("time", "speed", "power"), 
class = "data.frame", row.names = c(NA, -3L))

df2 <- structure(list(time = c("2010-01-01 00:00:00", 
"2010-01-01 01:00:00", 
"2010-01-01 02:00:00"), speed = c(0.1, 0.2, 0.2), power = c(1.1, 
1.2, 1.2)), .Names = c("time", "speed", "power"), 
class = "data.frame", row.names = c(NA, -3L))

【讨论】:

    猜你喜欢
    • 2021-07-23
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2021-06-08
    • 2012-11-22
    • 2020-03-12
    • 2019-07-15
    • 2012-03-06
    相关资源
    最近更新 更多