在 R 中,如何使用 eeptools 根据出生日期计算年龄?



我正在尝试使用R中的eeptools根据出生日期计算年龄。

我关注了一些教程页面,但它不起作用

我的原始数据集如下所示:

Born       bioguide   
1946-05-27    A000370 
1979-06-19    A000371 
1980-04-18    A000367 
1958-06-12    A000369 
1948-03-23    B001291 
1973-07-24    B000213 
1949-09-15    B001281 
1950-03-12    B001271 
1952-04-20    B001292 
1950-06-20    B001293

而且我想要的输出是(年龄可能有点错误,因为我是手动计算的(:

Born        Age   
1946-05-27     72 
1979-06-19     41 
1980-04-18     40 
1958-06-12     62 
1948-03-23     72 
1973-07-24     47 
1949-09-15     71 
1950-03-12     70 
1952-04-20     68 
1950-06-20     70

你能帮我做出所需的输出吗?

非常感谢,

看起来eeptools有一个age_calc()功能。

your_data <- data.frame(stringsAsFactors=FALSE,
Born = c("1946-05-27", "1979-06-19", "1980-04-18", "1958-06-12",
"1948-03-23", "1973-07-24", "1949-09-15", "1950-03-12",
"1952-04-20", "1950-06-20"),
bioguide = c("A000370", "A000371", "A000367", "A000369", "B001291",
"B000213", "B001281", "B001271", "B001292", "B001293")
)
library(eeptools)
#> Loading required package: ggplot2
your_data$age <- eeptools::age_calc(dob = as.Date(your_data$Born),
enddate = Sys.Date(),
units = 'years')
your_data
#>          Born bioguide      age
#> 1  1946-05-27  A000370 73.62459
#> 2  1979-06-19  A000371 40.56158
#> 3  1980-04-18  A000367 39.73224
#> 4  1958-06-12  A000369 61.58075
#> 5  1948-03-23  B001291 71.80328
#> 6  1973-07-24  B000213 46.46569
#> 7  1949-09-15  B001281 70.32048
#> 8  1950-03-12  B001271 69.83281
#> 9  1952-04-20  B001292 67.72678
#> 10 1950-06-20  B001293 69.55884

创建于 2020-01-10 由 reprex 软件包 (v0.3.0(

有关eeptools的更多信息,请点击此处:https://github.com/jknowles/eeptools

不知道如何使用eptools做到这一点,但没有它应该足够简单。

dta <- data.frame(born = as.Date(c("1934-02-02", "1956-02-05"),
id=c("A","B")))
dta$age <-  as.numeric(round((as.Date("2020-01-01")-dta$born)/365))

您可以使用包lubridate通过time_length()+difftime()来计算年龄

library(lubridate)
df <- within(df,age <- round(time_length(difftime(Sys.Date(),as.Date(Born)),"years")))

这样

> df
Born bioguide age
1  1946-05-27  A000370  74
2  1979-06-19  A000371  41
3  1980-04-18  A000367  40
4  1958-06-12  A000369  62
5  1948-03-23  B001291  72
6  1973-07-24  B000213  46
7  1949-09-15  B001281  70
8  1950-03-12  B001271  70
9  1952-04-20  B001292  68
10 1950-06-20  B001293  70

最新更新