r - 如何计算R中两条记录之间的日期差异
问题描述
大家好,我的df
有 3 列和 100 多行,看起来像
PID Record_date DOB
123 25-02-2009 22-08-1944
165 20-04-2017 22-08-1944
我试图计算 PID 的年龄,但结果如下
PID Record_date DOB Age
123 25-02-2009 22-08-1944 65
165 20-04-2017 22-08-1944 73
我通过以下代码计算了 PID 的年龄
df$Age <- as.numeric(df$Record_date - df$DOB)/365
df$Age <- round (df$Age, digits = 0)
我的预期结果和结果
PID Record_date DOB Age
123 25-02-2009 22-08-1944 64
165 20-04-2017 22-08-1944 72
提前致谢
解决方案
period
您可以从包中创建一个对象lubridate
并提取年份信息。
library(dplyr)
library(lubridate)
df %>%
mutate(across(c(Record_date, DOB), dmy),
Age = as.period(DOB %--% Record_date)$year)
# PID Record_date DOB Age
# 1 123 2009-02-25 1944-08-22 64
# 2 165 2017-04-20 1944-08-22 72
如果您删除$year
,您可以获得期间的详细信息:
# Age
# 64y 6m 3d 0H 0M 0S
# 72y 7m 29d 0H 0M 0S
注: DOB %--% Record_date
是 的快捷方式interval(DOB, Record_date)
。
推荐阅读
- python - 我正在尝试从我的用户那里获取:first_name 和 last_name,并注意到在我的 html 代码中正在改进
- android - 为什么我的位图图像出现在警报对话框后面?
- ios - 根据用户选择从数据模型中列出和过滤 - SwiftUI
- excel - 如何从 Excel 中的文本字符串中提取特定数字?
- swift - UITableViewCell 内的 UICollectionView 缓慢滚动
- .net-core - 依赖注入 - .NET Core Windows 窗体
- compilation - 用 openmpi-4.0.5 编译的 Quantum esspresso-6.7.0 问题
- react-native - 如何访问从子到父反应原生的状态变量?
- html - 为什么 CSS 变换会影响站点宽度?
- javascript - Angular - 无法安装 Moment 和 Material Moment 适配器