首页 > 解决方案 > 在R中排列列数据

问题描述

我的数据集如下所示

ID     Diagnosis date    Procedure date
1      2005-09-09        2008-04-09
1      2006-05-09        2007-08-08
2      2007-07-02        2007-08-01
2      2007-07-02        2009-08-05
2      2008-05-8         2007-08-10

我想将我的数据分组如下

ID      Diagnosis date     Procedure date
1       2005-09-09         2007-08-08
        2006-05-09         2008-04-09
2       2007-07-02         2007-08-01
                           2007-07-10
        2008-05-08         2009-08-05

基本上程序日期应该在诊断日期之后

标签: r

解决方案


希望下面的代码解决:

library(dplyr)
data <- data.frame(ID =  c(1,1,2,2,2), Diagnosis = c("2005-09-09","2006-05-09","2007-07-02","2007-07-02","2008-05-08"),
                   Procedure =  c("2008-04-09","2007-08-08","2007-08-01","2009-08-05","2007-08-10"))

data$Diagnosis <- as.Date(data$Diagnosis)
data$Procedure <- as.Date(data$Procedure)


data1 <- data[,-2] %>%
  group_by(ID) %>%
  arrange( ID,Procedure)
out <- data.frame(data1,data[2])
out <- out[,c(1,3,2)]
out

ID  Diagnosis  Procedure
1  1 2005-09-09 2007-08-08
2  1 2006-05-09 2008-04-09
3  2 2007-07-02 2007-08-01
4  2 2007-07-02 2007-08-10
5  2 2008-05-08 2009-08-05

推荐阅读