首页 > 解决方案 > 尝试移动列中的条目

问题描述

我正在尝试移动列中的条目以将它们设置为开始/停止时间。每个 id 的第一行设置得很好,但我需要将其余部分向下移动,以便在我尝试的时候正常工作。

我曾尝试使用 dplyr 并将条目更改为新列,但问题是时间条目位于另一列中,因此我正在尝试解决此问题。

#This is what my data looks like
mydata<-data.frame(id=c(rep(1,3),rep(2,2)),baseline=c(rep("2018-07-14",3),
                                                      rep("2018-06-16",2)),
                   date=c("2018-08-23","2018-09-20","2018-10-05","2018-07-04","2018-08-08"))
head(mydata)

expecteddata<-data.frame(id=c(rep(1,3),rep(2,2)),
                   start=c("2018-07-14","2018-08-23","2018-09-20","2018-06-16","2018-07-04"),
                   end=c("2018-08-23","2018-09-20","2018-10-05","2018-07-04","2018-08-08"))
head(expecteddata)

这是我希望得到的。增加开始时间也可能很好,因为不同的行将属于不同的风险集,但这是一个不同的问题。任何帮助或指示将不胜感激我如何继续。

标签: rdplyrsurvival

解决方案


确保日期变量是正确的类并尝试:

library(dplyr)

mydata %>%
  group_by(id) %>% 
  mutate(baseline =  lag(date, default = first(baseline))) %>%
  rename(start = baseline, end = date)

# A tibble: 5 x 3
# Groups:   id [2]
     id start      end       
  <dbl> <date>     <date>    
1     1 2018-07-14 2018-08-23
2     1 2018-08-23 2018-09-20
3     1 2018-09-20 2018-10-05
4     2 2018-06-16 2018-07-04
5     2 2018-07-04 2018-08-08

推荐阅读