2016-01-27 153 views
1

我有多個csv文件,我需要讀入R.第一列文件包含日期和時間,當我加載數據框時將轉換爲POSIXlt。我的每個csv文件都具有在Excel中以相同方式格式化的日期和時間,但是,有些文件的讀入方式不同。從Excel中讀取日期到R

例如,

我的文件看起來像這樣一次輸入:

date    value 
1 2011/01/01 00:00:00 39 
2 2011/01/01 00:15:00 35 
3 2011/01/01 00:30:00 38 
4 2011/01/01 00:45:00 39 
5 2011/01/01 01:00:00 38 
6 2011/01/01 01:15:00 38 

因此,我用它來修改格式的代碼是:

DATA$date <- as.POSIXlt(DATA$date,format="%Y/%m/%d %H:%M:%S") 

但是,某些文件正在讀作:

date    value 
1 01/01/2011 00:00 39 
2 01/01/2011 00:15 35 
3 01/01/2011 00:30 38 
4 01/01/2011 00:45 39 
5 01/01/2011 01:00 38 
6 01/01/2011 01:15 38 

這意味着我的代碼的格式部分不起作用,並給出錯誤。因此,是否有自動檢測date列的格式?或者,有沒有辦法知道它是如何讀取的,因爲Excel中列的格式在兩者上都是相同的。

+1

這可能幫助:http://stackoverflow.com/questions/26064292/guess-formats-r-lubridate –

回答

2

當您的日期輸入使用錯誤的格式字符串時,我似乎得到NA值。如果是這種情況,你可以分兩步解決這個問題。首先,從Excel格式的日期假設你有三個小時,分鐘和秒:

date.original <- DATA$date 
DATA$date <- as.POSIXlt(DATA$date,format="%Y/%m/%d %H:%M:%S") 

這應該留在dateNA值,這會丟失秒的日期。那麼你可以試試這個:

DATA$date[is.na(DATA$date)] <- as.POSIXlt(date.original, format="%Y/%m/%d %H:%M") 

這應該覆蓋剩下的數據。

數據

DATA <- data.frame(date=c('2011/01/01 00:00:00', '2011/01/01 00:15', 
          '2011/01/01 00:30:00', '2011/01/01 00:45'), 
        value=c(39, 35, 38, 39))