首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >%r Xts对齐时间(不是日期)

%r Xts对齐时间(不是日期)
EN

Stack Overflow用户
提问于 2018-10-01 21:21:28
回答 1查看 126关注 0票数 0

我想通过它们一天中的时间来比较两个时间序列。这两个系列来自不同的日期(即第一个系列为2018-08-10,第二个系列为2018-09-10 ),但具有相同的时间戳。是否可以在两个序列之间执行cbind/merge,只考虑时间戳,而不考虑时间戳的日期?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-10-02 01:39:43

我不知道你的数据是什么样子的,所以下次请创建一个可重现的例子。我创建了2个data.frames作为示例。您现在应该知道xts需要一个有效的timeseries对象,而hms timeseries不是xts的有效timeseries。

也就是说,您始终可以使用以下命令将xts对象转换为data.frame:

my_df <- data.frame(times = index(my_xts), coredata(my_xts))

现在来看这个例子:

我通过dplyr展示了它,但是如果您在每个data.frame中创建一个hms对象,merge也会工作得很好。我使用hms包中的as.hms在data.frames中创建一个hms对象,并将它们连接在一起。

代码语言:javascript
复制
x <- Sys.time() + 1:10*60 # today
y <- x - 60*60*24 # same time yesterday

df1 <- data.frame(times = x, val1 = 1:10)
df2 <- data.frame(times = y, val2 = 10:1)

library(dplyr)

# create hms object in df1 and in df2 on the fly
df1 %>% 
  mutate(times2 = hms::as.hms(times)) %>% 
  inner_join(df2 %>% mutate(times2 = hms::as.hms(times)), by = "times2"
             )

               times.x val1          times2             times.y val2
1  2018-10-01 18:26:05    1 18:26:05.421764 2018-09-30 18:26:05   10
2  2018-10-01 18:27:05    2 18:27:05.421764 2018-09-30 18:27:05    9
3  2018-10-01 18:28:05    3 18:28:05.421764 2018-09-30 18:28:05    8
4  2018-10-01 18:29:05    4 18:29:05.421764 2018-09-30 18:29:05    7
5  2018-10-01 18:30:05    5 18:30:05.421764 2018-09-30 18:30:05    6
6  2018-10-01 18:31:05    6 18:31:05.421764 2018-09-30 18:31:05    5
7  2018-10-01 18:32:05    7 18:32:05.421764 2018-09-30 18:32:05    4
8  2018-10-01 18:33:05    8 18:33:05.421764 2018-09-30 18:33:05    3
9  2018-10-01 18:34:05    9 18:34:05.421764 2018-09-30 18:34:05    2
10 2018-10-01 18:35:05   10 18:35:05.421764 2018-09-30 18:35:05    1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52592135

复制
相关文章

相似问题

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