【问题标题】:R - Merge data and time when time column already has current system date in itR - 当时间列中已经包含当前系统日期时合并数据和时间
【发布时间】:2021-03-24 17:22:35
【问题描述】:

对于数据集,我有一个日期和一个时间列,两者都具有“字符”类。数据来源https://d396qusza40orc.cloudfront.net/exdata%2Fdata%2Fhousehold_power_consumption.zip

数据集中有 9 个变量/列。以下是日期和时间列中的数据。

Date Time
2007-02-01 00:01:00
2007-02-01 00:02:00
2007-02-01 18:22:00
2007-02-02 04:15:00
2007-02-02 13:43:00

日期和时间都属于“字符”类

我的目标是将日期和时间分别从“字符”类转换为“日期”和“时间”类。最终,我希望能够按日期和时间对数据点进行排序,并按不同的时间间隔准备直方图。

我将日期转换为“日期”类,如下所示:

newdata$Date <- as.Date(newdata$Date, "%d/%m/%Y") 

我将时间转换如下:

newdata$Time <- strptime(newdata$Time, format="%H:%M:%S")

日期安排得很好。但是,对于时间,它会添加当前日期,如下图所示。

Date Time
2007-02-01 2020-12-13 00:01:00
2007-02-01 2020-12-13 00:02:00
2007-02-01 2020-12-13 18:22:00
2007-02-02 2020-12-13 04:15:00
2007-02-02 2020-12-13 13:43:00

如何将“时间”列中的当前日期替换为“日期”列中的相应日期,以便在“时间”列中得到一个 DateTime 对象?然后我可以使用此列对数据点进行排序和存储。

感谢您的帮助!

【问题讨论】:

    标签: r class date datetime


    【解决方案1】:

    您可以结合使用 paste 和 lubridate::ymd_hms() 来执行此操作:

    library(dplyr)
    library(lubridate)
       
    mutate(data, Time = ymd_hms(paste(Date, Time)))
    
    # A tibble: 5 x 2
      Date       Time               
      <chr>      <dttm>             
    1 2007-02-01 2007-02-01 00:01:00
    2 2007-02-01 2007-02-01 00:02:00
    3 2007-02-01 2007-02-01 18:22:00
    4 2007-02-02 2007-02-02 04:15:00
    5 2007-02-02 2007-02-02 13:43:00
    

    【讨论】:

      【解决方案2】:

      在基础 R 中,你可以这样做:

      data$date_time <- as.POSIXct(paste(data$Date, data$Time), tz = 'UTC')
      
      #  Date       Time     date_time          
      #  <chr>      <chr>    <dttm>             
      #1 2007-02-01 00:01:00 2007-02-01 00:01:00
      #2 2007-02-01 00:02:00 2007-02-01 00:02:00
      #3 2007-02-01 18:22:00 2007-02-01 18:22:00
      #4 2007-02-02 04:15:00 2007-02-02 04:15:00
      #5 2007-02-02 13:43:00 2007-02-02 13:43:00
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-10
        相关资源
        最近更新 更多