从dob计算R中的年龄

时间:2017-03-16 03:22:01

标签: r dob

我是R的新手,但在发布此处之前我已经搜索了很多这个主题,因为google和stackoverflow中有很多结果。

我的数据框有3041行和几列,DDN是葡萄牙语的出生日期。

我已尝试过其他主题的所有这些解决方案,但这些解决方案都没有。

Age <- function(dob, age= today(), units = "years", floor = TRUE) {
            calc.age = new_interval(DDN, idade) / duration(num = 1, units = units)
            if (floor) return(as.integer(floor(calc.age)))
            return(calc.age)}


Age <- as.Date (P4PA$DDN)

P4PA$Idade <- floor(age_calc(P4PA$DDN, units = "years"))

Age <- as.numeric(format(as.Date(Sys.time()),format="%Y"))-as.numeric(format(as.Date(DDN,format="%m/%d/%Y"),format="%Y"))

yourdata$age <- floor(age_calc(yourdata$birthdate, units = "years"))

age = function(from, to) {
from_lt = as.POSIXlt(from)
to_lt = as.POSIXlt(to)

age = to_lt$year - from_lt$year

ifelse(to_lt$mon < from_lt$mon |
     (to_lt$mon == from_lt$mon & to_lt$mday < from_lt$mday),
     age - 1, age)
}

And this: http://blog.jsonbecker.com/2013/06/calculating-age-in-r.html
head(P4PA)
  DDN
4/22/1956
12/26/1964
4/16/1963
1/28/1970
7/15/1972
1/18/1956
class(P4PA$DDN)
"factor"

我需要用3041个观察结果来计算这个专栏的年龄,但我无法弄清楚如何。我试图将DDN类更改为数字,但会出现带有错误的消息。我真的不知道该怎么做了。我觉得这很容易。

谢谢

1 个答案:

答案 0 :(得分:3)

首先,将the blog post中的函数age_calc复制并粘贴到您的R控制台(或RStudio控制台)中,然后点击“输入”。存储它。

该函数有3个参数:dob,enddate和units。 dob参数必须是类Date。单位可以是天,月或年。假设您需要多年,则应在数据框中添加一列age

P4PA$age <- age_calc(as.Date(P4PA$DDN, "%m/%d/%Y"), units = "years")

P4PA
         DDN age
1  4/22/1956  60
2 12/26/1964  52
3  4/16/1963  53
4  1/28/1970  47
5  7/15/1972  44
6  1/18/1956  61