我有两个名为" Date"和"时间"。日期为YYYY.mm.dd,时间为HH:MM格式。我需要为我的财务计量经济学任务创建一个日期和时间对象。
首先,我将两个对象粘贴在一起并创建一个字符向量,如下所示:
Date Time Open High Low
1 2017.09.01 00:00 1.19013 1.19017 1.19013
2 2017.09.01 00:01 1.19015 1.19017 1.19015
然而,当我试图转换" date_time_c"字符向量到" POSIXct"格式,我使用以下代码。
DATA<-DAT%>%select(Date,Time,Open,High,Low)%>%
mutate(Date_Time=as.POSIXct(paste(DATA$Date, DATA$Time), format="%YYYY.%mm.%dd %H:%M"))
但结果是,我收到&#34; null&#34;检查新创建的值&#34; Date_Time&#34;对象
> head(DATA$Date_Time)
[1] NA NA NA NA NA NA
我应该首先施放我的角色矢量整数吗?我不确定..
任何人都可以帮我解决此错误
答案 0 :(得分:2)
IIUC,你可以试试这个。
dt['Date_Time']=paste(dt$Date,dt$Time)
dt$Date_Time=strptime(dt$Date_Time,
format = "%Y.%m.%d %H:%M")
dt
Date Time Open High Low Date_Time
1 2017.09.01 00:00 1.19013 1.19017 1.19013 2017-09-01 00:00:00
2 2017.09.01 00:01 1.19015 1.19017 1.19015 2017-09-01 00:01:00
或
dt$Date_Time=as.POSIXct(dt$Date_Time,
format = "%Y.%m.%d %H:%M")
dt
Date Time Open High Low Date_Time
1 2017.09.01 00:00 1.19013 1.19017 1.19013 2017-09-01 00:00:00
2 2017.09.01 00:01 1.19015 1.19017 1.19015 2017-09-01 00:01:00
答案 1 :(得分:1)
您还可以使用lubridate
包(Tidyverse的一部分),该包具有使用ymd_hm()
等函数将字符串转换为日期或日期时间对象的函数。
library(tidyverse)
library(lubridate)
df <- tribble(~Date, ~Time, ~Open, ~High, ~Low,
"2017.09.01", "00:00", "1.19013", "1.19017", "1.19013",
"2017.09.01", "00:01", "1.19015", "1.19017", "1.19015")
df %>% mutate(Date.Time = ymd_hm(paste(Date, Time, sep=" ")))
产生
# A tibble: 2 x 6
Date Time Open High Low Date.Time
<chr> <chr> <chr> <chr> <chr> <dttm>
1 2017.09.01 00:00 1.19013 1.19017 1.19013 2017-09-01 00:00:00
2 2017.09.01 00:01 1.19015 1.19017 1.19015 2017-09-01 00:01:00