将R中的日期格式转换为更易于管理的时间序列数据?

时间:2017-06-14 03:36:15

标签: r datetime dataframe

我已将一些时间序列数据导入到R中,如下所示。

> data1[1:2,]
             X1          X2      X3
1   01/01/04 07:47:52  1.1111  1.1112
2   01/01/04 17:46:14  1.1112  1.1113

我希望将这些数据用作时间序列,但我不确定如何处理日期。数据不会定期报告,它们差别很大,因此只需通过索引绘制数据即可转换数据实际显示的方式。数据大约有100万行。

我正在考虑将日期列转换为小数,但它似乎过于复杂,我确信有一个内置的R包可以更好地处理它。

具体来说,我想在这里做两件事:

  1. 第一个是将第一列分为由日/月/年组成的第一列,第二列由小时:分钟:秒组成

  2. 第二个是找到一个R包,它有助于将日期和/或时间转换为不会转换数据的离散索引。因此,两行索引之间的差异取决于它们之间的时间差(而不是每行上升一个索引)。

  3. 或者(对于2),一个允许我根据日期格式数据绘制时间序列并准确地分隔数据点的包也将是一个巨大的帮助。

2 个答案:

答案 0 :(得分:2)

这听起来像一个基于意见的问题,所以这里说:我认为lubridate包最适合进行非发布的过时转换。您可以使用dmy将日期字符串转换为日期,使用hms转换为日期时间组合,并使用dmy_hms之类的内容转换为日期时间组合。

答案 1 :(得分:2)

要回答第二部分,ggplot2会自动处理日期和时间,如果格式正确的话。

library(dplyr)
library(tidyr)
library(lubridate)
library(ggplot2)

data <- data.frame(X1 = c("01/01/04 07:47:52", "01/01/04 17:46:14", "01/02/04 12:01:17"),
                   X2 = c(1.1111, 1.1112, 1.1113),
                   X3 = c(1.1112, 1.1113, 1.1114))

data %>% 
  mutate(dt = dmy_hms(X1)) %>% 
  gather(variable, value, -X1, -dt) %>% 
  ggplot(aes(dt, value)) + 
    geom_line(aes(color = variable, group = variable))

enter image description here