【问题标题】:Creating a date/time object by two string objects通过两个字符串对象创建日期/时间对象
【发布时间】:2017-09-30 16:32:01
【问题描述】:

我有两个名为“日期”和“时间”的对象。日期为 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"))

但结果,当检查新创建的“Date_Time”对象时,我收到“空”值

> head(DATA$Date_Time)
[1] NA NA NA NA NA NA

我应该先转换我的字符向量整数吗?我不确定..

谁能帮我解决这个错误

【问题讨论】:

  • format="%Y.%m.%d %H:%M"没有重复YYYY

标签: r date


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您还可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多