尝试为我的数据构建一个xts。日期可以,但我不知道如何将“时间”栏转换为时间格式。时间以数字形式存储,数据如下所示:
date time price
1 19900102 930 353.40
2 19900102 931 353.25
3 19900102 932 353.02
4 19900102 933 352.97
5 19900102 934 352.81
6 19900102 935 352.74
我尝试了下面的代码,但它不能工作。
sp500.xts <- as.xts(sp500[,3],order.by=as.POSIXct(strptime(paste(as.character(sp500[,1]),as.character(sp500[,2])),"%Y%m%d %H:%M")))
感谢所有帮助我们的人。
发布于 2019-04-16 03:58:20
来自lubridate
的parse_date_time
和timetk
包的铁杆粉丝:
library(tidyverse)
library(lubridate)
library(timetk)
test %>%
mutate(date = parse_date_time(paste(date, str_pad(time, 4, side = "left", pad = "0")), "YmdHM")) %>%
select(-time) %>%
tk_xts(silent = T)
price
1990-01-02 09:30:00 353.40
1990-01-02 09:31:00 353.25
1990-01-02 09:32:00 353.02
1990-01-02 09:33:00 352.97
1990-01-02 09:34:00 352.81
1990-01-02 09:35:00 352.74
发布于 2019-04-16 03:44:29
假设使用930 = 09:30
,可以尝试这样做:
timec
用于填充以获取完整的hm;dtc
用于获取完整的日期时间,然后使用ymd_hm
将其读取为datetime格式。
library(tidyverse)
library(lubridate)
test %>%
mutate(timec = str_pad(time, 4, side = 'left', pad = '0'),
dtc = str_c(date, timec),
dt = ymd_hm(dtc))
> test %>%
+ mutate(timec = str_pad(time, 4, side = 'left', pad = '0'),
+ dtc = str_c(date, timec),
+ dt = ymd_hm(dtc))
date time price timec dtc dt
1 19900102 930 353.40 0930 199001020930 1990-01-02 09:30:00
2 19900102 931 353.25 0931 199001020931 1990-01-02 09:31:00
3 19900102 932 353.02 0932 199001020932 1990-01-02 09:32:00
4 19900102 933 352.97 0933 199001020933 1990-01-02 09:33:00
5 19900102 934 352.81 0934 199001020934 1990-01-02 09:34:00
6 19900102 935 352.74 0935 199001020935 1990-01-02 09:35:00
https://stackoverflow.com/questions/55696103
复制相似问题