将日期和时间组合到日期列中以进行绘图

Mef*_*to1 7 plot r

我想创建一个线图.我的数据框中有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
Run Code Online (Sandbox Code Playgroud)

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

eip*_*i10 9

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"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


And*_*rie 8

重建您的数据:

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)
Run Code Online (Sandbox Code Playgroud)

现在使用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")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述