2013-10-24 162 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=" ")