如何将数字时间转换为R中的日期、时间格式
How to convert numeric time into date, time format in R
正在尝试为我的数据构建 xts。日期还可以,但我不知道如何将 "time" 列转换为时间格式。时间存储为数字,数据如下所示:
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")))
感谢所有帮助过的人。
假设 930 = 09:30
,可以试试这个:
timec
是pad得到完整的hm; dtc
是获取完整的日期时间,然后使用ymd_hm
读入日期时间格式。
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
来自 lubridate
和 timetk
包的 parse_date_time
的忠实粉丝:
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
正在尝试为我的数据构建 xts。日期还可以,但我不知道如何将 "time" 列转换为时间格式。时间存储为数字,数据如下所示:
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")))
感谢所有帮助过的人。
假设 930 = 09:30
,可以试试这个:
timec
是pad得到完整的hm; dtc
是获取完整的日期时间,然后使用ymd_hm
读入日期时间格式。
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
来自 lubridate
和 timetk
包的 parse_date_time
的忠实粉丝:
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