如何基于R中两个不同变量的条件提取日期

马约尔

我有一个包含100个观察值的数据集,其中包含患者ID,药物代码,处方日期。我想创建一个新的“索引日期”列,该列是患者第三次更换药物的日期。

PatientID   DrugCode    Prescriptiondate   
A1  3   07-08-2014   
A1  3   08-09-2014   
A1  7   19-09-2014   
A1  5   30-09-2014  
A2  4   11-07-2014  
A2  4   21-07-2014  
A2  3   13-08-2014  
A2  5   26-08-2014  
A2  5   30-09-2014  
A3  2   16-08-2014  
A3  3   17-09-2014  
A4  5   08-06-2014  
A4  5   29-06-2014  
A4  6   20-08-2014  
A4  6   24-09-2014  
A4  4   22-10-2014  
A4  4   25-10-2014   

数据集应如下所示:

PatientID   DrugCode    Prescriptiondate    IndexDate  
A1  3   07-08-2014  30-09-2014  
A1  3   08-09-2014  30-09-2014  
A1  7   19-09-2014  30-09-2014  
A1  5   30-09-2014  30-09-2014  
A2  4   11-07-2014  26-08-2014  
A2  4   21-07-2014  26-08-2014  
A2  3   13-08-2014  26-08-2014  
A2  5   26-08-2014  26-08-2014  
A2  5   30-09-2014  26-08-2014  
A3  2   16-08-2014  NA  
A3  3   17-09-2014  NA  
A4  5   08-06-2014  22-10-2014  
A4  5   29-06-2014  22-10-2014  
A4  6   20-08-2014  22-10-2014  
A4  6   24-09-2014  22-10-2014  
A4  4   22-10-2014  22-10-2014  
A4  4   25-10-2014  22-10-2014 

在上述情况下,患者A1和A2分别于2014年9月30日和2014年6月26日第三次将药物更改为药物5; A3并没有第三次将药物更改为药物,而A4则在22-10-10改变为药物4。 2014,因此索引日期应分别为30-09-2014,26-08-2014,NA,22-10-2014。

如果有人可以帮助您编写代码解决此问题,请。

bgoldst

这是一个基本的R解决方案,无耻地窃取了Pierre Lafortune出色的独特比赛创意:

df <- data.frame(PatientID=c('A1','A1','A1','A1','A2','A2','A2','A2','A2','A3','A3','A4','A4','A4','A4','A4','A4'),DrugCode=c(3,3,7,5,4,4,3,5,5,2,3,5,5,6,6,4,4),Prescriptiondate=as.Date(c('07-08-2014','08-09-2014','19-09-2014','30-09-2014','11-07-2014','21-07-2014','13-08-2014','26-08-2014','30-09-2014','16-08-2014','17-09-2014','08-06-2014','29-06-2014','20-08-2014','24-09-2014','22-10-2014','25-10-2014'),'%d-%m-%Y'));
df$IndexDate <- do.call('c',by(df,df$PatientID,function(g) rep(g$Prescriptiondate[match(unique(g$DrugCode)[3],g$DrugCode)],nrow(g))));
df;
##    PatientID DrugCode Prescriptiondate  IndexDate
## 1         A1        3       2014-08-07 2014-09-30
## 2         A1        3       2014-09-08 2014-09-30
## 3         A1        7       2014-09-19 2014-09-30
## 4         A1        5       2014-09-30 2014-09-30
## 5         A2        4       2014-07-11 2014-08-26
## 6         A2        4       2014-07-21 2014-08-26
## 7         A2        3       2014-08-13 2014-08-26
## 8         A2        5       2014-08-26 2014-08-26
## 9         A2        5       2014-09-30 2014-08-26
## 10        A3        2       2014-08-16       <NA>
## 11        A3        3       2014-09-17       <NA>
## 12        A4        5       2014-06-08 2014-10-22
## 13        A4        5       2014-06-29 2014-10-22
## 14        A4        6       2014-08-20 2014-10-22
## 15        A4        6       2014-09-24 2014-10-22
## 16        A4        4       2014-10-22 2014-10-22
## 17        A4        4       2014-10-25 2014-10-22

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于两个不同列中的两个条件的子集数据帧R

如何基于两个条件提取行

基于R中两个不同组的两行的条件差

基于两个变量的条件匹配

如何编写基于两个数据集的另一个变量的相似性来提取变量值的for循环(在R中)?

如何根据连接条件从 R 中的两个不同数据框中添加两列

R ::如何在IF条件下检查变量的两个不同值

从R中的集合中提取两个不同的向量

如何基于R中两个日期的比较从数据集中删除行?

如何基于R中的两个变量对单个列进行分组

如何找到R中不同行中的两个日期之间的差异?

基于 R 中列中的两个变量有条件地过滤组中的值

如何在PHP中合并两个不同的日期

如何显示两个不同表中的日期?

如何从两个条件中获取最新日期?

如何基于在两个不同列上设置的某些条件来填充pandas数据框中的列?

如何在 R 中合并具有不同长度和两个条件的两个数据帧?

如何在R中组合来自不同数据帧的两个变量?

基于两个条件提取部分字符串

如何在条件变量中粘贴基于r中另一个不同变量的值的值?

如何根据每个数据框中两个不同日期列的日期条件合并两个数据框?

如何基于r中两个df的条件求和另一个df中的值?

如何比较两个不同的日期?

基于 R 中的两个变量和两个数据集替换值

如何为从SQL中的两个日期列提取的日期范围生成所有日期

从两个不同变量中的角度日期范围滑块返回日期输出

如何从两个不同的神经网络中获取两个变量列表

如何从两个不同的MySQL表中的两个变量绘制折线图

如何在python中的两个不同y轴上绘制两个变量?