如何根据R中的criteria/conditions计算不同行之间的时间差
How to calculate time difference between different rows based off criteria/conditions in R
我有以下数据框,我想创建一个变量来计算当前 ADMITDATE
与前一个 DISCHARGE DATE
之间的天数,仅用于重复或 [=16] =]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 将格式指定为 month-day-year。然后我们 group_by
ID
值,然后计算当前 ADMITDATE
和之前 DISCHARGEDATE
之间的差异(使用 lag()
)
我有以下数据框,我想创建一个变量来计算当前 ADMITDATE
与前一个 DISCHARGE DATE
之间的天数,仅用于重复或 [=16] =]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 将格式指定为 month-day-year。然后我们 group_by
ID
值,然后计算当前 ADMITDATE
和之前 DISCHARGEDATE
之间的差异(使用 lag()
)