r - 从出生日期变量 (R) 计算今天的年龄
问题描述
我有一个数据框,其中包含个人 ID 的出生日期信息。
mydf <- data.frame(id=c(1,2),
dtbirth=as.Date(c("2012-01-01","2013-04-01")))
我想计算个人截至今天的年龄。下面的代码似乎有效,但将“天”输出到新变量age
mydf %>%
mutate(age=floor((today()-dtbirth)/365))
解决方案
我们可以用 wrap withas.integer/as.numeric
来移除class
属性difftime
mydf %>%
mutate(age= as.integer(floor((today()-dtbirth)/365)))
-输出
# id dtbirth age
#1 1 2012-01-01 9
#2 2 2013-04-01 8
默认情况下,当我们使用 时-
,difftime
通过"auto"
mydf %>%
mutate(age = today() - dtbirth)
# id dtbirth age
#1 1 2012-01-01 3430 days
#2 2 2013-04-01 2974 days
如果我们需要更精细的控制,使用difftime
它自己并指定units
mydf %>%
mutate(age = difftime(today(), dtbirth, units = 'weeks'))
# id dtbirth age
#1 1 2012-01-01 490.0000 weeks
#2 2 2013-04-01 424.8571 weeks
我们不能units
超过“周”,因为可用的选项是
difftime(time1, time2, tz, units = c("auto", "secs", "mins", "hours", "days", "weeks"))
它被称为
诸如“月”之类的单位是不可能的,因为它们的长度不是恒定的。要创建月、季或年的间隔,请使用 seq.Date 或 seq.POSIXt。
推荐阅读
- c++ - 为什么 clang -Wunused-member-function 不对未使用的成员函数发出警告?
- ruby-on-rails - 如何从 has_many 的双方创建记录:通过关联?
- javascript - 如何实现 Jest Mocks?
- google-cloud-platform - 谷歌云功能;使用 Google Cloud Rest API
- node.js - 在 Twilio 语音通话中重放话语
- appium-desktop - UiAutomator 意外退出,代码为 4294967295,信号为空
- bash - 在 Bash shell 脚本中递增不显示更改的值?
- javascript - Swift 在 webview 中评估 JavaScript
- python - Django ORM - 在一系列模型字段之间找到变量适合的对象?
- python - 我想创建循环遍历特定列的行的新数据框列