r - 如何根据 R 中的标准/条件计算不同行之间的时间差
问题描述
我有以下数据框,我正在寻找一个变量来计算当前ADMITDATE
与前一个之间的天数,DISCHARGE DATE
仅用于重复或当ID
s 相等时
ID ADMITDATE DISCHARGE DATE
1 5/24/2020 5/27/2020
1 5/30/2020 6/15/2020
2 3/9/2010 4/5/2020
3 2/7/2020 3/7/2020
4 5/15/2020 5/16/2020
4 5/20/2020 5/25/2020
4 5/30/2020 6/15/2020
5 7/8/2020 7/20/2020
6 1/20/2020 1/22/2020
6 1/28/2020 2/5/2020
所以我希望输出如下所示。
ID ADMITDATE DISCHARGE DATE DAYDIFF
1 5/24/2020 5/27/2020 NULL
1 5/30/2020 6/15/2020 3
2 3/9/2010 4/5/2020 NULL
3 2/7/2020 3/7/2020 NULL
4 5/15/2020 5/16/2020 NULL
4 5/20/2020 5/25/2020 4
4 5/30/2020 6/15/2020 5
5 7/8/2020 7/20/2020 NULL
6 1/20/2020 1/22/2020 NULL
6 1/28/2020 2/5/2020 6
关于如何在 R 中为此编写代码的任何提示?
我目前拥有的代码是
df$DAYDIFF <- [df$ID==lag(ID)] <- as.Date(as.character(test$ADMITDATE), format="%m/%d/%Y")-
lag(as.Date(as.character(test$DISCHARGEDATE), format="%m/%d/%Y"))
解决方案
假设您的数据存储在一个名为的数据框中df
:
library(tidyverse)
library(lubridate)
df %>%
mutate(ADMITDATE = mdy(ADMITDATE),
DISCHARGEDATE = mdy(DISCHARGEDATE)) %>%
group_by(ID) %>%
mutate(DAYDIFF = ADMITDATE - lag(DISCHARGEDATE, 1))
该mutate
调用使用 lubridate 将您的列转换为日期格式,以将格式指定为月-日-年。然后我们在计算当前和前一个之间的差异之前group_by
的值(使用)ID
ADMITDATE
DISCHARGEDATE
lag()
推荐阅读
- docker - Elasticsearch pod 未运行正在重新启动
- php - 如何在 PHP 的 Visual Studio Code 中选择包括 $ 在内的整个变量名?
- html - 如何创建一个内容覆盖我的滑块的 div?
- javascript - 无法在.env文件vue cli 3中指定url
- php - 使用连接到 mysql 的 php 变量更改样式表
- android - 匕首中的依赖组件引发错误
- asp.net-mvc-4 - 使用 Asp.net MVC 模型创建 HTML 表
- google-maps - 用谷歌地图计算超速限制
- python - 需要帮助将着色器应用于场景中的选定对象 (Maya)
- android - 如何为材料设计按钮赋予标题和副标题?