2017-07-26 20 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