根据相对于治疗日期的日期查找事件
Find An Event Based on Date Relative to a Treatment Date
我正在处理一些长格式的数据,并尝试使用 R 来处理它并准备进行分析。每个项目都有一个唯一标识 (UNIQUE_ID) 和一系列事件(例如:a、c、d、v)以及相应的事件日期。而且,还有治疗日期(TX_DATE).
我正在尝试为每个主题标记某个事件类型 (c),当且仅当它发生在 TX_DATE 之后。此外,我想确定治疗 (TX_DATE) 和感兴趣事件发生的日期 (c with EVENT_DATE) 之间的时间。
示例输入数据:
UNIQUE_ID EVENT EVENT_DATE TX_DATE
1 a 1/1/1999 1/15/2020
1 a 1/6/2002 1/15/2020
1 c 2/2/2020 1/15/2020
2 v 1/4/1999 7/1/2020
2 v 1/5/2012 7/1/2020
2 d 6/7/2020 7/1/2020
2 c 4/3/1998 7/1/2020
2 c 8/8/2020 7/1/2020
2 d 9/5/2010 7/1/2020
3 a 6/5/1995 6/2/2020
3 a 9/12/2020 6/2/2020
4 v 1/6/1998 8/1/2020
4 v 7/8/2019 8/1/2020
4 a 9/8/2020 8/1/2020
4 c 7/6/2020 8/1/2020
示例输出数据:
UNIQUE_ID EVENT EVENT_DATE TX_DATE POST_TX_FLAG TIME_EVENT_DAYS TIME_EVENT_MONTHS
1 a 1/1/1999 1/15/2020 0 7684 252.60
1 a 1/6/2002 1/15/2020 0 6583 216.40
1 c 2/2/2020 1/15/2020 1 18 0.59
2 v 1/4/1999 7/1/2020 0 7849 258.02
2 v 1/5/2012 7/1/2020 0 3100 101.91
2 d 6/7/2020 7/1/2020 0 24 0.79
2 c 4/3/1998 7/1/2020 0 8125 267.09
2 c 8/8/2020 7/1/2020 1 38 1.25
2 d 9/5/2010 7/1/2020 0 3587 117.92
3 a 6/5/1995 6/2/2020 0 9129 300.10
3 a 9/12/2020 6/2/2020 0 102 3.35
4 v 1/6/1998 8/1/2020 0 8243 270.97
4 v 7/8/2019 8/1/2020 0 390 12.82
4 a 9/8/2020 8/1/2020 0 38 1.25
4 c 7/6/2020 8/1/2020 0 26 0.85
此外,我将要处理的数据可能有很多事件。我想将输出限制为 TX_DATE.
之后的第一个事件
如果您在 R 中使用 tidyverse
和 lubridate
包
假设您的数据包含在数据框中df
library(tidyverse)
library(lubridate)
df %>% mutate( EVENT_DATE = mdy(EVENT_DATE),
TX_DATE = mdy(TX_DATE),
POST_TX_FLAG = EVENT_DATE > TX_DATE,
TIME_EVENT_DAYS = time_length(TX_DATE - EVENT_DATE , unit="day"),
TIME_EVENT_MONTHS = time_length(TX_DATE - EVENT_DATE , unit="month") )
我正在处理一些长格式的数据,并尝试使用 R 来处理它并准备进行分析。每个项目都有一个唯一标识 (UNIQUE_ID) 和一系列事件(例如:a、c、d、v)以及相应的事件日期。而且,还有治疗日期(TX_DATE).
我正在尝试为每个主题标记某个事件类型 (c),当且仅当它发生在 TX_DATE 之后。此外,我想确定治疗 (TX_DATE) 和感兴趣事件发生的日期 (c with EVENT_DATE) 之间的时间。
示例输入数据:
UNIQUE_ID EVENT EVENT_DATE TX_DATE
1 a 1/1/1999 1/15/2020
1 a 1/6/2002 1/15/2020
1 c 2/2/2020 1/15/2020
2 v 1/4/1999 7/1/2020
2 v 1/5/2012 7/1/2020
2 d 6/7/2020 7/1/2020
2 c 4/3/1998 7/1/2020
2 c 8/8/2020 7/1/2020
2 d 9/5/2010 7/1/2020
3 a 6/5/1995 6/2/2020
3 a 9/12/2020 6/2/2020
4 v 1/6/1998 8/1/2020
4 v 7/8/2019 8/1/2020
4 a 9/8/2020 8/1/2020
4 c 7/6/2020 8/1/2020
示例输出数据:
UNIQUE_ID EVENT EVENT_DATE TX_DATE POST_TX_FLAG TIME_EVENT_DAYS TIME_EVENT_MONTHS
1 a 1/1/1999 1/15/2020 0 7684 252.60
1 a 1/6/2002 1/15/2020 0 6583 216.40
1 c 2/2/2020 1/15/2020 1 18 0.59
2 v 1/4/1999 7/1/2020 0 7849 258.02
2 v 1/5/2012 7/1/2020 0 3100 101.91
2 d 6/7/2020 7/1/2020 0 24 0.79
2 c 4/3/1998 7/1/2020 0 8125 267.09
2 c 8/8/2020 7/1/2020 1 38 1.25
2 d 9/5/2010 7/1/2020 0 3587 117.92
3 a 6/5/1995 6/2/2020 0 9129 300.10
3 a 9/12/2020 6/2/2020 0 102 3.35
4 v 1/6/1998 8/1/2020 0 8243 270.97
4 v 7/8/2019 8/1/2020 0 390 12.82
4 a 9/8/2020 8/1/2020 0 38 1.25
4 c 7/6/2020 8/1/2020 0 26 0.85
此外,我将要处理的数据可能有很多事件。我想将输出限制为 TX_DATE.
之后的第一个事件如果您在 R 中使用 tidyverse
和 lubridate
包
假设您的数据包含在数据框中df
library(tidyverse)
library(lubridate)
df %>% mutate( EVENT_DATE = mdy(EVENT_DATE),
TX_DATE = mdy(TX_DATE),
POST_TX_FLAG = EVENT_DATE > TX_DATE,
TIME_EVENT_DAYS = time_length(TX_DATE - EVENT_DATE , unit="day"),
TIME_EVENT_MONTHS = time_length(TX_DATE - EVENT_DATE , unit="month") )