【发布时间】: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 变量。
【问题讨论】:
我想创建一个线图。我的数据框中有 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 变量。
【问题讨论】:
lubridate 包是另一种选择。它处理大部分繁琐的格式化细节,因此它比基本的R 日期函数更容易使用。例如,在您的情况下,mdy_hm (month-day-year_hour-minute) 会将您的 date 和 time 变量转换为单个 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"))
【讨论】:
重构你的数据:
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")
【讨论】: