2017-09-02 21 views
0

5人がこの投稿を締め切ると投票しましたが、答えがあるので、サイトは完全に削除することを警告します。文字列をdatetimeに変換するときに、datetimeの代わりにNAを取得する

将来の読者のためにできるだけ有益なものにする - 文字列を日時に変換する際に文法上の誤りがある場合は、警告とエラーがあれば問題の原因を指摘できない。代わりに、出力はNAに置き換えられます。

ここでは、警告とエラーの元のサンプルコードです。 サンプル日付:5/20/2017 7:285/20/2017 2:28:57

サンプル・コード:この中

lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C")

library(lubridate) 
ymd_hms('5/20/2017 7:28', tz = "America/New_York") 

> Warning message: 
All formats failed to parse. No formats found. 

strptime("5/20/2017 7:29:00","%m/%d/%Y %H:%M/%S") 

as.Date("5/20/2017 7:29:00") 

> Error in charToDate(x) : 
    character string is not in a standard unambiguous format 

as.POSIXct('5/20/2017 7:29:00',format="%Y-%m-%dT%H:%M:%OS") 

その他の理由NAエラーが発生した他人のために次のことを示唆したポストがありましたケース:日付文字列のフォーマッタに関するドキュメントを見ると、この質問を避けることができましたが、その時点でpost wa私はこれを知らなかった。問題を解決するための鍵は、何が間違っているのかを理解し、正しい場所を探していることです。フォーマッタが正しく設定されている作業コードの良い例は、この質問に対する答えとして受け入れられています。

+0

をお試しください: 'のstrptime(C( "2017年5月20日午前7時29分30秒"、「2017年5月22日7:58 ")、"%m /%d /%Y%H:%M ")'。 – lmo

答えて

2

lubridateは私の個人的なお気に入りです。

  1. ymdを使用して、年 - 月 - 日意味:しかし、それを使用するときは、二つのミスをしています。代わりに、月 - 日のmdyを使用してください。
  2. hms時間 - 分 - 秒に使用しますが、秒は供給しません。

これはエラーなしで動作し

> mdy_hms('5/20/2017 7:28:00', tz = "America/New_York") 
[1] "2017-05-20 07:28:00 EDT" 

または

> mdy_hm('5/20/2017 7:28', tz = "America/New_York") 
[1] "2017-05-20 07:28:00 EDT" 
関連する問題