2017-07-26 7 views
0

csvファイルからdatetimeデータをアップロードした後、am/pmでdatetimeが表示されますが、文字形式であるため回帰直線を追加できません。 stprtimeを使用して整数に変換しようとすると、現在は整数の新しい列が作成されますが、am/pm情報は失われています。この情報をどのように保持できますか?am/pmのdatetimeを文字から整数に変換できません

サンプルデータ "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を使用して、私は午前/午後の間で識別することはできませんよ。ロケールは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などの形式のセパレータに影響します。

更新

我々は、我々が正しく午前/午後の概念を理解しておくようにするために時間を少し変更することができます(12時40分、午後にAMまたはちょうど真夜中を過ぎています?)。

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" 

Iは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

am/pmのケースについてのヘッドアップありがとうございます。ただし、変換後も、新しく作成された日付列にはまだam/pm情報は含まれません。 – David

+0

@David私はあなたの編集と私の側からの別の考えに基づいて質問を編集しました。どうやらあなたは小文字のam/pmをすでに持っていましたが、結果に何も変わらないことが判明しました。 –

+0

私は 'Sys.setlocale'情報とstrptime結果を追加して私の質問を更新しました。/pm。 – David

関連する問題