【问题标题】:Combining date and time into a Date column for plotting将日期和时间组合到日期列中以进行绘图
【发布时间】:2014-06-08 12:07:04
【问题描述】:

我想创建一个线图。我的数据框中有 3 列:

date        time   numbers
01-02-2010  14:57  5
01-02-2010  23:23  7
02-02-2010  05:05  3
02-02-2010  10:23  11

如何结合前两列并根据日期和时间制作图? Date 是 Date 类,time 只是一个 char 变量。

【问题讨论】:

    标签: r plot


    【解决方案1】:

    lubridate 包是另一种选择。它处理大部分繁琐的格式化细节,因此它比基本的R 日期函数更容易使用。例如,在您的情况下,mdy_hm (month-day-year_hour-minute) 会将您的 datetime 变量转换为单个 POSIXct 日期时间列。 (如果您的意思是日-月-年,而不是月-日-年,那么只需使用dmy_hm。)请参见下面的代码。

    library(lubridate)
    
    dat$date_time = mdy_hm(paste(dat$date, dat$time))
    
    dat
            date  time numbers           date_time
    1 01-02-2010 14:57       5 2010-01-02 14:57:00
    2 01-02-2010 23:23       7 2010-01-02 23:23:00
    3 02-02-2010 05:05       3 2010-02-02 05:05:00
    4 02-02-2010 10:23      11 2010-02-02 10:23:00
    
    library(ggplot2)
    ggplot(dat, aes(date_time, numbers)) + 
      geom_point() + geom_line() +
      scale_x_datetime(breaks=date_breaks("1 week"),
                       minor_breaks=date_breaks("1 day"))
    

    【讨论】:

      【解决方案2】:

      重构你的数据:

      dat <- read.table(text="
      date        time   numbers
      01-02-2010  14:57  5
      01-02-2010  23:23  7
      02-02-2010  05:05  3
      02-02-2010  10:23  11", header=TRUE)
      

      现在使用as.POSIXct()paste() 将您的日期和时间组合成一个POSIX 日期。您需要使用?strptime 中定义的符号指定格式。另请参阅?DateTimeClasses 了解更多信息

      dat$newdate <- with(dat, as.POSIXct(paste(date, time), format="%m-%d-%Y %H:%M"))
      plot(numbers ~ newdate, data=dat, type="b", col="blue")
      

      【讨论】:

      • 这会将 NA 返回为 newdate,我尝试使用它并使用 as.Date 将日期首先转换为日期类。但仍然没有成功。 #data$DateTime "01-02-2010 00:00:00" 不起作用。
      • 它适用于您提供的示例日期。请尝试将问题追溯到不起作用的数据,并将其包含在您的问题中。
      • @user1927971 您评论中的格式字符串有一个秒字段。如果您在问题中的数据上使用它,您将获得 NA。你的实际数据有秒字段吗?
      猜你喜欢
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      相关资源
      最近更新 更多