我正在尝试使用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