2016-08-08 40 views
0

我已导入带时间戳和值的csv文件(excel)。我在R中将时间戳列转换为可用时间的所有努力都会导致N/A。我已经看了几个主题(SO和其他地方),并尝试了很多建议,但不知怎的没有设法使它正确。我也尝试过各种简单的例子,例如R-博客和他们工作得很好。R - 从导入的csv文件中的字符到POSIXct日期/时间格式的转换以N/A结尾

> 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 ... 

任何建议都欢迎。至少在一段时间内,我知道血管发育不良,但不会尝试。

+1

尝试:as.POSIXct(dframe $ d,tz =“GMT”,format =“%Y.%m。%d%H:%M:%S”)。一个月需要使用小写字母m和d。 – Dave2e

+0

当然是的Dave2e。感谢名单! – bjarg

回答

1

尝试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" 

“我知道lubridate,但不会尝试它,至少一段时间。” - 有没有你不想使用/不能使用的原因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" 
+0

只是我花了很多时间在这个上,我想深究其中。我会在不久的将来看到润滑。通常情况下(至少对我而言)一开始是混杂的问题,并逐渐减少nr。直到只剩下一个问题,这个问题是在某个地方不经意间引入的, – bjarg

相关问题