通过两个字符串对象

时间:2017-09-30 16:32:01

标签: r date

我有两个名为" 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

我应该首先施放我的角色矢量整数吗?我不确定..

任何人都可以帮我解决此错误

2 个答案:

答案 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