3

次のように、chr形式のデータフレームに日付列があります。

chr [1:1944] "20-Sep-90" "24-Feb-05" "16-Aug-65" "19-Nov-56" "28-Nov-59" "19-Apr-86"

次のようなものを使用して日付に変換したい:

strptime(x=data$dob, '%d-%b-%y')

しかし、私は次のような結果でいくつかの将来の日付を取得します

[1] "1990-09-20" "2005-02-24" "2065-08-16" "2056-11-19" "2059-11-28" "1986-04-19" "2041-04- 01 "" 1971-01-23 "
[9] "1995-11-25" "1995-11-25" "2009-02-11" "2002-09-19" "1977-10-06" "1998-03-22" "2050-03- 12 "" 2030-03-26 "

正しい世紀に始まった日付を確実に返す方法はありますか?

ありがとう

4

3 に答える 3

4

%y(のドキュメントから?strptime)2桁の年から推測されるデフォルトの世紀を変更するための明白なオプションがあるようには見えません。

ただし、によって返されるオブジェクトのstrptime()クラスはPOSIXltであるため、今日以降(または使用する他のカットオフ日以降)の日付から100年を引くのは非常に簡単です。

# Use strptime() to create object of class POSIXlt
dd <- c("20-Sep-90", "24-Feb-05", "16-Aug-65", 
        "19-Nov-56", "28-Nov-59", "19-Apr-86")
DD <- strptime(dd, '%d-%b-%y')

# Subtract 100 years from any date after today
DD$year <- ifelse(DD > Sys.time(), DD$year-100, DD$year)
DD
[1] "1990-09-20" "2005-02-24" "1965-08-16" "1956-11-19" "1959-11-28" "1986-04-19"
于 2012-04-04T04:26:22.360 に答える
2
    dd <- c("20-Sep-90", "24-Feb-05", "16-Aug-65", 
        "19-Nov-56", "28-Nov-59", "19-Apr-86")
    library(lubridate)
    DD=dmy(dd)

https://cran.r-project.org/web/packages/lubridate/vignettes/lubridate.html http://vita.had.co.nz/papers/lubridate.pdf

于 2017-05-15T11:14:46.130 に答える
0
strptime(data$dob, "%Y/%m/%d")
于 2018-01-14T07:05:12.553 に答える