1

Date クラスに強制したい日付の文字列があります。

df$x <- as.Date(df$x)

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

わかりました、私はこのエラーに精通しています。私のコラムには""またはのようなものがあります。90-Smarch-13"問題は、head(df$x)通常の日付2013-11-04で問題ないように見えるため、私の列のグローバルな問題ではなく、数行の問題です。

私の質問は:

  1. この標準の明確な形式ではない行がいくつあるかを調べることはできますか?
  2. インデックスを見つけることはできますか (それらを検査または削除する目的で)?

私の考え:

  1. 使用try:

for (i in 1:nrow(df)) try(as.Date$x[i]) # very slow, doesn't finish for 1M rows

  1. 問題が何を使用しているかを推測してみてくださいnchar

head(df[nchar(df$x) != 10 & !is.na(df$x), ]$x)

もっと体系的な方法はありますか?

4

1 に答える 1

1

たとえば、パッケージparse_date_timeから使用します。lubridate

dates.toparse <- c("2013-11-04","" ,"90-Smarch-13","2012-05-04")
 ## parse dates , I give the correct format here %Y-%m-%d
(dates.parsed <- parse_date_time(dates.toparse,orders="Y-m-d"))
[1] "2013-11-04 UTC" NA               NA               "2012-05-04 UTC"
 ## to locate bad foarmatted elements
 dates.toparse[is.na(dates.parsed)]
[1] ""             "90-Smarch-13"
## or by indices
which(is.na(dates.parsed))
[1] 2 3
于 2013-11-03T23:26:01.027 に答える