2013-10-24 125 views
5

我创建了一个文件是这样的:日期时间转换

> filesInside 
     Date   Time 
1 01:09:2013 10:35:49.997 
2 01:09:2013 10:35:50.197 

我怎么可能让一个函数使用

as.POSIXct() 

,我应该得到的东西是这样的:

> as.POSIXct("2013-09-01 10:35:50") 
[1] "2013-09-01 10:35:50 NZST" 

我该如何将它作为一个函数?

我迄今为止代码:

DateTime <- as.POSIXct(paste(filesInside$Date, filesInside$Time), format="%Y%m%d %H%M%S") 

欣赏有点帮助吧。欢呼声

+0

一个小的可重复的例子,预期的输出,并且您已经尝试过的东西 - 很不错的第一个问题! +1! – Henrik

+0

NZST从哪里来?它应该始终是NZST吗? – Hugh

+0

我认为这显示当地时间。通过在R中输入'as.POSIXct(“2013-09-01 10:35:50”)''来尝试自己的代码,看看你得到了什么代码。你有不同的东西吗? – jeff1234

回答

3

你可以试试这个。日期时间组件和分隔符在format中的顺序应该反映要转换的对象中的那些顺序。另见?strptime

with(filesInside, 
    as.POSIXct(paste(Date, Time), 
       format = "%d:%m:%Y %H:%M:%S", 
       tz = "NZ")) 
# [1] "2013-09-01 10:35:49 NZST" "2013-09-01 10:35:50 NZST" 
2
library(lubridate) 
dmy_hms(apply(filesInside, 1, paste, collapse=" "), tz="NZ") 
# [1] "2013-09-01 10:35:49 NZST" "2013-09-01 10:35:50 NZST" 

lubridate这里是一个容易的事,特别是其收藏的dmy_hmsymd等功能。

要正确跨行粘贴,只需使用apply(<data.frame>, 1, paste, collapse=" ")