【发布时间】:2015-09-14 10:03:04
【问题描述】:
我正在处理非常大的大学生数据集,其中日期格式为
%d/%m/%y
我需要计算年龄。
我的数据从数据库中提取出来时看起来像这样:
data <- data.table(DOB=c("12/12/01", "8/05/80", "2/11/99"),
started =c("5/10/10", "4/01/12", "27/08/11"))
问题是计算年龄时没有指定全年。
我已尝试将年份更改为数字:
data$DOB<-as.Date(data$DOB, "%d/%m/%y")
data$start<-as.Date(data$start, "%d/%m/%y")
data$DOB<-as.numeric(format(data$DOB,"%Y"))
data$start<-as.numeric(format(data$start,"%Y"))
data$age<-data$start-data$dob
显然这不起作用,因为我需要添加 20 和 19。
有没有办法我可以使用 gsub 在所有 dob 小于或等于 15 的前面加上一个 '20' 并在所有 dob 大于 15 的前面加上一个 '19'。
我认为我的数据集中没有 85 岁的人。
【问题讨论】:
-
创建数据时日期是否应该是字符串;例如
"12/12/01"? -
是的,数据是由第三方以字符串形式提供的,采用这种日期格式。要求他们以 %Y 格式再次提取它的计算成本非常高。
-
好的,您能否编辑您的帖子以更正此问题?
标签: r data.table gsub 2-digit-year