2017-07-26 17 views
0

從CSV文件上傳datetime數據後,我可以看到AM/PM的日期時間,但它是在一個字符格式,因而不能添加回歸線。 當試圖使用stprtime轉換爲整數時,我創建一個現在是整數的新列,但它已經丟失了am/pm信息。我如何保留這些信息?不能與AM/PM轉換日期時間從性格到整數

的樣本數據 「wpplot」:

Date Irrigation Rep ID WP 
6/29/17 12:40 PM Reduced 1 11B -14.3 
6/29/17 12:50 PM Reduced 1 11B -14.4 
6/29/17 1:00 AM Reduced 1 11B -14.5 
6/29/17 1:10 AM Reduced 1 11B -14.5 
6/29/17 1:20 AM Reduced 1 11B -14.5 
6/29/17 1:30 AM Reduced 1 11B -14.5 
6/29/17 1:40 AM Reduced 1 11B -14.5 
6/29/17 1:50 AM Reduced 1 11B -14.5 
6/29/17 2:00 AM Reduced 1 11B -14.5 
6/29/17 2:10 AM Reduced 1 11B -14.5 
6/29/17 2:20 AM Reduced 1 11B -14.5 
6/29/17 2:30 AM Reduced 1 11B -14.5 

代碼:

attach(wpplot) 
wpplot$datefinish<-strptime(wpplot$Date, format = "%m/%d/%y %H:%M %p") 

UPDATE

在使用strptime我不能AM/PM之間進行辨別。語言環境設置爲English_United States(OS是Windows)。

> Sys.getlocale("LC_TIME") 
[1] "English_United States.1252" 
> 
> Sys.setlocale("LC_TIME", "English") 
[1] "English_United States.1252" 
wpplot$datefinish<-strptime(wpplot$Date, format = "%m/%d/%y %I:%M %p") 
> datefinish 
[1] "2017-06-29 12:40:00 PDT" "2017-06-29 12:50:00 PDT" 
"2017-06-29 01:00:00 PDT" "2017-06-29 01:10:00 PDT" 
+0

提供'dput的輸出(頭(wpplot,10))'。 – Masoud

回答

0

的AM/PM格式,只有當它是用小寫,而不是在AM/PM就像你的榜樣工作。另外請注意,我改變了%H%I?strptime表示。

以下的伎倆我。

wpplot$Date  <- tolower(wpplot$Date) 
wpplot$datefinish <- strptime(wpplot$Date, format = "%m/%d/%y %I:%M %p") 

在文檔,但是,它也指出,AM/PM的行爲是特定於語言環境:

特定於語言環境的轉換和從字符串被酌情使用和可用。這會通過LC_TIME語言環境類別的設置影響日期和月份的名稱,AM/PM指示符(如果使用)以及格式(如%x和%X)中的分隔符。

更新

我們可以改變時間,以確保我們正確理解AM/PM概念的位(在午後上午十二時40分或剛過午夜?)。

wpplot$Date[1] <- "6/29/17 02:40 pm" # This is definitely 14:40 29th of June 

# CORRECT: 
strptime(wpplot$Date, format = "%m/%d/%y %I:%M %p") 
# [1] "2017-06-29 14:40:00 CEST" "2017-06-29 12:50:00 CEST" 
# [3] "2017-06-29 01:00:00 CEST" "2017-06-29 01:10:00 CEST" 
# [5] "2017-06-29 01:20:00 CEST" 

注意,我使用format = "%m/%d/%y %I:%M %p"和不format = "%m/%d/%y %H:%M %p"

# WRONG 
strptime(wpplot$Date, format = "%m/%d/%y %H:%M %p") 
# [1] "2017-06-29 02:40:00 CEST" "2017-06-29 12:50:00 CEST" 
# [3] "2017-06-29 01:00:00 CEST" "2017-06-29 01:10:00 CEST" 
# [5] "2017-06-29 01:20:00 CEST" 
+0

感謝您對上午/下午情況的提醒。但是,即使在轉換後,新的datefinish列仍不包含am/pm信息。 – David

+0

@David我編輯了這個問題,根據你的編輯和我的另一個想法。顯然,你有小寫的上午/下午了,但事實證明,沒有任何改變的結果.. –

+0

我也更新了我的問題,加上「Sys.setlocale」信息和strptime結果 - 仍然不會點之間辨別/下午。 – David