将原始数据转换为R日期/时间类

时间:2012-11-26 21:54:55

标签: r date datetime posixct

我已经成功地删除了一堆我现在想在R中操作的表。我是R的新手,但这似乎是一个很好的解决方法。

我目前将数据存储在条形分隔的CSV中,看起来像这样:

FIRST|LAST|9812036311|string-string|1999-07-06 00:00:00|2000-07-06 00:00:00|12345|1999-07-27 00:00:00|2,518.50

我可以用以下内容阅读:

j <- read.table('my_data.csv', header = FALSE, sep = "|")

但是......如何将这些日期列转换为R可以读取的日期?

我是否需要先定义一个框架?

3 个答案:

答案 0 :(得分:2)

按照建议here结帐colclasses,以帮助R了解您应在CSV的每一列中预期的数据类型。另请查看用于处理日期格式的lubridate包。

答案 1 :(得分:1)

要像你一样转换日期时间字符串,我建议使用 结构 功能,如下所示:

> # begin with date-time values stored as character vectors ("strings"):

> w
   [1] "2000-07-06 00:00:00"

> typeof(w)
   [1] "character"

> class(w)
   [1] "character"

> # use structure to convert them
> w = structure(w, class=c("POSIXt, POSIXct"))

> # verify that they are indeed R-recognizable date-time objects:
> w
   [1] "2000-07-06 00:00:00"
   attr(,"class")
   [1] "POSIXt, POSIXct"

w / r / t机制:R函数是矢量化的,所以你可以传入一列日期并将结果绑定到同一列,如下所示:

> j$day
    [1] 1353967580 1353967581 1353967583 1353967584 1353967585 1353967586 
    [7] 1353967587 1353967588 1353967589 1353967590

> j$day = structure(day, class=c("POSIXt", "POSIXct"))

> day
   [1] "2012-11-26 14:06:20 PST" "2012-11-26 14:06:21 PST" "2012-11-26 14:06:22 PST"
   [4] "2012-11-26 14:06:23 PST" "2012-11-26 14:06:24 PST" "2012-11-26 14:06:25 PST"
   [7] "2012-11-26 14:06:26 PST" "2012-11-26 14:06:28 PST" "2012-11-26 14:06:29 PST"
   [10] "2012-11-26 14:06:30 PST"

答案 2 :(得分:0)

事实证明我只需要as.Date - 作为一个完整性检查,我创建了一个带有修改日期的新列。

j$better.date <- as.Date(j$original.date, format="%Y-%d-%m")