r - 在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
基本上程序日期应该在诊断日期之后
解决方案
希望下面的代码解决:
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
推荐阅读
- typescript - Typescript:基于属性值的属性类型
- css - 移动设备上的扩展图像,背景固定
- javascript - Angular2 +整个DOM在组件加载ngFor上闪烁
- java - 如何通过对象变量字符串对对象的arraylist进行排序
- sql-server-2008 - 删除空列并合并行
- r - 使用向量中的值和名称对数据框进行子集化的简单有效方法
- android - 想要确定哪个提供商在 android 中为我提供位置(无论是 gps 还是蜂窝/wifi 网络)
- r - maps::map() 返回地区名称而不是国家名称
- django - Elastic Beanstalk - 实例上的命令失败。发生意外错误 [错误代码:0000000001]
- c++ - 您应该使用 openssl 作为命令行还是将库编译到编程项目中?