Я понятия не имею, как выглядят ваши данные, поэтому в следующий раз, пожалуйста, создайте воспроизводимый пример.Я создал 2 data.frames, которые могут служить примером.Теперь вам нужно, чтобы xts нуждался в действительном объекте временных рядов, а hms timeseries не является действительным временным рядом для xts.
При этом вы всегда можете преобразовать объект xts в data.frame с помощью:
my_df <- data.frame(times = index(my_xts), coredata(my_xts))
Теперь для примера:
Я показываю это через dplyr, но merge
также будет работать, если вы создадите объект hms в каждом data.frame.Я использую as.hms
из пакета hms, чтобы создать объект hms в data.frames и соединить их вместе.
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