R - 在导入的 csv 文件中从 chr 到 POSIXct date/time 格式的转换以 N/A 结尾

R - conversion from chr to POSIXct date/time format in imported csv file ends in N/A

我导入了一个带有时间戳和值的 csv 文件 (excel)。我在 R 中将时间戳列转换为可用时间的所有努力导致 N/A。我查看了几个线程(SO 和其他地方)并尝试了很多建议,但不知何故未能正确处理。我还尝试了各种更简单的例子,例如R 博客,他们工作得很好。

> dframe <- read.csv2("file.csv", dec=".", colClasses=c("character","numeric"), as.is=TRUE)

> str(dframe)

    'data.frame':   424 obs. of  2 variables:
     $ d: chr  "2016.08.02 03:59:45" "2016.08.02 04:11:16" "2016.08.02 04:22:45" "2016.08.02 04:34:13" ...
     $ h: num  30 33.3 35.6 35.6 48.9 48.9 48.9 47.8 46.7 46.7 ...

我相信这是一个好的开始。那么:

> dframe$d <- as.POSIXct(dframe$d, tz="GMT", format="%Y.%M.%D %H:%M:%S")
> str(dframe)

    'data.frame':   424 obs. of  2 variables:
     $ d: POSIXct, format: NA NA NA NA ...
     $ h: num  30 33.3 35.6 35.6 48.9 48.9 48.9 47.8 46.7 46.7 ...

欢迎提出任何建议。我知道 lubridate 但至少暂时不会尝试。

尝试lubridate

Multithreaded BLAS/LAPACK libraries detected. Using 8 cores for math algorithms.
> library(lubridate)

Attaching package: ‘lubridate’

The following object is masked from ‘package:base’:

    date

> ymd_hms("2016.08.02 03:59:45")
[1] "2016-08-02 03:59:45 UTC"
> str(ymd_hms("2016.08.02 03:59:45"))
POSIXct[1:1], format: "2016-08-02 03:59:45"

"I am aware of lubridate but will not be trying it, for a while at least." -- 您不想 to/can 不使用 lubridate 的原因是什么?这似乎是一个简单的修复。

编辑

我今天工作很无聊,所以我决定再试一次。您的 POSIXct 函数失败的原因主要是因为“.”。你有分隔符。快速修复是使用 gsub 替换那些“.”。和 ”-”。这是一个例子:

> s = c("2016.08.02 03:59:45", "2016.08.02 04:11:16", "2016.08.02 04:22:45", "2016.08.02 04:34:13")
> dates = as.POSIXct(gsub(pattern="\.", replacement="-", x=s)) 
> print(dates)
[1] "2016-08-02 03:59:45 PDT" "2016-08-02 04:11:16 PDT"
[3] "2016-08-02 04:22:45 PDT" "2016-08-02 04:34:13 PDT"