私は数万のエントリを持つ日付変数を持つデータフレームを持っています。私は日付クラスの変数にすることができないか、またはそれをlubridate()で処理することができないので、どこかでデータ入力ミスがあるかもしれないと思います。ifelse()によるトラブルシューティングの日付
このMWEでは、最初の観測(a1)は、私の日付が予想される形式の正当な日付です。他の観測(a2〜a7)は、異なる種類のデータ入力ミスを表す。日付変数の各観測値をテストして、観測値が予想される形式の正当な日付かどうかを確認したいと思います。
私は正規のパターンとifelse()を使用しようとしましたが、コードを動作させることができません。私はdf2(データフレームである必要はありません)のようなものになりたいので、注意を必要とするかもしれない日付変数観測のIDを簡単に識別できます。どんな助けでも大歓迎です。
ポイント開始:
df1 <- data.frame(varID=c("a1","a2","a3","a4","a5","a6","a7"),varDate=c("01/01/2015","0101/2016","01/012017","35/01/2018","01/17/2019","01/01/20200","abc"))
望ましい結果:
df2 <- data.frame(varID=c("a2","a3","a4","a5","a6","a7"),VarIssue=c("format issue","format issue","format issue","format issue","format issue","format issue"))
現在のコード:
ifelse(df1$varDate == (^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$),"ok","format issue")
私はおそらく何かが不足していますが、 "ok" 'format'を使って' as.Date'を使って、NA( "フォーマット問題")を見つけてください: 'is.na(as.Date "%d /%m /%Y")) ' – Henrik
私はそれを因子や文字に変えることができますが、それを日付クラス変数に変換することはできません。 – LLL
@Henrik私はロジックが気に入っていますが、提供される正規表現は、 '/'、 '-'、または' .'をセパレータとして使用して複数の日付フォーマットを受け入れます。 – Mako212