我想按他们的时间比较2个时间序列。这两个系列的日期不同(例如,第一个系列的日期为2018-08-10,第二个系列的日期为2018-09-10),但具有相同的时间戳。是否可以在两个系列之间进行绑定/合并,而只吸收时间戳记而不是时间戳记日期?
谢谢
答案 0 :(得分:0)
我不知道您的数据看起来如何,所以下次请创建可重复的检查表。我创建了两个data.frames可以作为示例。现在,您应该xts需要一个有效的时间序列对象,而hms时间序列对于xts来说不是有效的时间序列。
话虽如此,您始终可以使用以下命令将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对象,并将它们连接在一起。
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