2013-04-30 24 views
12

POSIXct我有因此具有三列的數據文件:的R - 轉換的日期和時間字段,以與HHMMSS格式

20010101 000000 0.833 
20010101 000500 0.814 
20010101 001000 0.794 
20010101 001500 0.772 
... 

由於是相當清楚的人的眼睛,前兩個是日期和時間。我需要將它們轉換爲POSIXct(或者其他更好的東西,但我在R中處理時間戳的有限的過去經驗是使用POSIXct)。通常情況下,在函數read.table與已經把它,我會用:

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

然而,第二列似乎就喪失了領先的零,因此它不能正常工作(可能是通過一個類型轉換?) 。

我看過Combine date as integer and time as factor to POSIXct in RConverting two columns of date and time data to one,但兩者都使用帶分隔符的時間,例如:,所以沒有相同的問題。

如何將這些色譜柱轉換爲POSIXct?

回答

16

你非常接近。以下「簡單」強制將前兩列讀爲字符串,這將保存前導零。

R> df <- read.table(text="20010101 000000 0.833 
20010101 000500 0.814 
20010101 001000 0.794 
20010101 001500 0.772", 
+ header=FALSE, colClasses=c("character", "character", "numeric"), 
+ col.names=c("Date", "Time", "Val")) 
R> df 
     Date Time Val 
1 20010101 000000 0.833 
2 20010101 000500 0.814 
3 20010101 001000 0.794 
4 20010101 001500 0.772 

現在你正嘗試「只是工程」:

R> df$DateTime <- as.POSIXct(paste(df$Date, df$Time), format="%Y%m%d %H%M%S") 
R> df 
     Date Time Val   DateTime 
1 20010101 000000 0.833 2001-01-01 00:00:00 
2 20010101 000500 0.814 2001-01-01 00:05:00 
3 20010101 001000 0.794 2001-01-01 00:10:00 
4 20010101 001500 0.772 2001-01-01 00:15:00 
R> 
3

你只需要導入數據的字符:

txt <- "Date Time value 
20010101 000000 0.833 
20010101 000500 0.814 
20010101 001000 0.794 
20010101 001500 0.772 
" 

df <- read.table(text=txt, header=TRUE, 
       colClasses=c("character", "character", "numeric")) 

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

謝謝。我接受了第一個答案,但這是基本相同的:-) – Flyto 2013-04-30 13:59:07

1

只要您可以使用lubridate包,它是超級真棒和快速。爲你的目的試試這個:

df <- read.table(text="20010101 000000 0.833 
20010101 000500 0.814 
20010101 001000 0.794 
20010101 001500 0.772", 
        header=FALSE, colClasses=c("character", "character",  "numeric"), 
        col.names=c("Date", "Time", "Val")) 

df$mix <- paste(df$Date, df$Time) 
df$mix <- parse_date_time(df$mix, 'Ymd HMS') 

只是你必須餵它正確的格式。我更喜歡它as.POSICct,因爲它更加靈活,並且您還有其他功能可以與時間變量一起工作。

相關問題