1

参加者がさまざまな形式で生年月日を入力したアンケート データがあります。

ID <- c(101,102,103,104,105,106,107)
dob <- c("20/04/2001","29/10/2000","September 1 2012","15/11/00","20.01.1999","April 20th 1999", "04/08/01")
df <- data.frame(ID, dob)

分析を行う前に、データが正しい形式 (つまり dd/mm/yr) でない場合にデータをサブセット化し、各セルを手動で修正できるようにする必要があります。

私は使用してみました:

df$dob <- strptime(dob, "%d/%m/%Y")

...どの日付が正しい形式であったかを強調しますが、間違って入力された日付の NA を取得するだけなので、後でそれらを変更したい場合には役に立ちません (ID を参照として使用します)。

誰かが私を助けることができるかもしれないアイデアを持っていますか?

4

2 に答える 2

3

lubridateパッケージをチェックしてください。

library(lubridate)
parse_date_time(dob, c("dmy", "Bdy"))
# [1] "2001-04-20 UTC" "2000-10-29 UTC" "2012-09-01 UTC" "0000-11-15 UTC" "1999-01-20 UTC"
# [6] "1999-04-20 UTC" "0001-08-04 UTC"
于 2013-09-26T12:27:34.890 に答える
-1

免責事項: あなたの質問を完全に理解したかどうかはわかりません。

以下のスニペットでは、dob が正しい形式であるかどうかに基づいて、dob2 に日付または NA が含まれます。is.na(dob2) をフィルタリングして、誤ったデータを取得できるはずです。03/04/2013 は 3 月 3 日または 4 月 4 日と解釈できることに注意してください。

ID <- c(101,102,103,104,105,106,107)
dob <- c("20/04/2001","29/10/2000","September 1 2012","15/11/00","20.01.1999","April 20th 1999", "04/08/01")
df <- data.table(ID, dob)

df[,dob2 := as.Date(dob, "%d/%m/%Y")]

EDIT-追加出力。ところで、次のようなこともできますdf[is.na(as.Date(dob, "%d/%m/%Y"))]

    ID              dob       dob2
1: 101       20/04/2001 2001-04-20
2: 102       29/10/2000 2000-10-29
3: 103 September 1 2012       <NA>
4: 104         15/11/00 0000-11-15
5: 105       20.01.1999       <NA>
6: 106  April 20th 1999       <NA>
7: 107         04/08/01 0001-08-04
于 2013-09-26T12:29:05.010 に答える