我有一个数据框,其中包含几个日期列,我需要返回一个列名序列,其中包含每行从最早到最旧的日期.
即,如果起始数据是:
data.frame(ID = c(1,2,3,4,5,6),col1 = as.Date(c("2011-02-01","2020-09-01",NA,"2010-06-01",NA,"2015-02-02")),col2 = as.Date(c("2010-02-01","2018-09-01","2012-03-01",NA,NA,NA)), col3 = as.Date(c("1998-09-02",NA,"2013-06-01","2003-05-01","2000-02-01",NA)),col4=as.Date(c("2020-04-01",NA,"2019-09-10","2014-03-05",NA,"2000-08-12")))
ID col1 col2 col3 col4
1 1 2011-02-01 2010-02-01 1998-09-02 2020-04-01
2 2 2020-09-01 2018-09-01 NA NA
3 3 NA 2012-03-01 2013-06-01 2019-09-10
4 4 2010-06-01 NA 2003-05-01 2014-03-05
5 5 NA NA 2000-02-01 NA
6 6 2015-02-02 NA NA 2000-08-12
那么最终的结果应该是:
data.frame(ID = c(1,2,3,4,5,6),col1 = as.Date(c("2011-02-01","2020-09-01",NA,"2010-06-01",NA,"2015-02-02")),col2 = as.Date(c("2010-02-01","2018-09-01","2012-03-01",NA,NA,NA)), col3 = as.Date(c("1998-09-02",NA,"2013-06-01","2003-05-01","2000-02-01",NA)),col4=as.Date(c("2020-04-01",NA,"2019-09-10","2014-03-05",NA,"2000-08-12")),seq = c("col3_col2_col1_col4","col2_col1","col2_col3_col4","col3_col1_col4","col3","col4_col1"))
ID col1 col2 col3 col4 seq
1 1 2011-02-01 2010-02-01 1998-09-02 2020-04-01 col3_col2_col1_col4
2 2 2020-09-01 2018-09-01 NA NA col2_col1
3 3 NA 2012-03-01 2013-06-01 2019-09-10 col2_col3_col4
4 4 2010-06-01 NA 2003-05-01 2014-03-05 col3_col1_col4
5 5 NA NA 2000-02-01 NA col3
6 6 2015-02-02 NA NA 2000-08-12 col4_col1