【问题标题】:Recognition and conversion of birth dates into ages识别和转换出生日期到年龄
【发布时间】:2020-12-31 11:39:23
【问题描述】:

当我在 R 中读取一个 excel 文件时,一列出生日期的一些值转换为 5 位整数(例如第 3 行)。我猜他们代表天数?

在这里,我想将“DOB”列中的日期和整数都转换为年份(即年龄)。我正在使用 eeptools 包中的 age_calc 函数。因此,在将列中的所有值转换为正确的日期时,我需要一些帮助,以便我可以使用 age_calc 函数而不会返回错误。提前致谢。

df1[1:5,1:5]:

  first_name last_name gender past_3_years_bike_related_purchases DOB       
  <chr>      <chr>     <chr>  <chr>                               <chr>     
1 Chickie    Brister   Male   86                                  1957-07-12
2 Morly      Genery    Male   69                                  1970-03-22
3 Ardelis    Forrester Female 10                                  27269     
4 Lucine     Stutt     Female 64                                  1979-01-28
5 Melinda    Hadlee    Female 34                                  1965-09-21

【问题讨论】:

  • 似乎 excel 中的列未正确格式化为日期。你是自己做的还是在某个地方下载的?

标签: r date


【解决方案1】:

您可以单独处理这些日期。

#Index which have all numbers in it. 
inds <- grepl('^\\d+$', df1$DOB)
#Create an empty column
df1$dob <- as.Date(NA)
#Change normal dates to date
df1$dob[!inds] <- as.Date(df1$DOB[!inds])
#Change excel date to dates.
df1$dob[inds] <- as.Date(as.numeric(df1$DOB[inds]), origin = "1899-12-30")
df1

#  first_name last_name gender        DOB        dob
#1    Chickie   Brister   Male 1957-07-12 1957-07-12
#2      Morly    Genery   Male 1970-03-22 1970-03-22
#3    Ardelis Forrester Female      27269 1974-08-28
#4     Lucine     Stutt Female 1979-01-28 1979-01-28
#5    Melinda    Hadlee Female 1965-09-21 1965-09-21

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    相关资源
    最近更新 更多