69 lines
2.5 KiB
Plaintext
69 lines
2.5 KiB
Plaintext
|
|
R Under development (unstable) (2020-09-23 r79248) -- "Unsuffered Consequences"
|
|
Copyright (C) 2020 The R Foundation for Statistical Computing
|
|
Platform: x86_64-pc-linux-gnu (64-bit)
|
|
|
|
R is free software and comes with ABSOLUTELY NO WARRANTY.
|
|
You are welcome to redistribute it under certain conditions.
|
|
Type 'license()' or 'licence()' for distribution details.
|
|
|
|
R is a collaborative project with many contributors.
|
|
Type 'contributors()' for more information and
|
|
'citation()' on how to cite R or R packages in publications.
|
|
|
|
Type 'demo()' for some demos, 'help()' for on-line help, or
|
|
'help.start()' for an HTML browser interface to help.
|
|
Type 'q()' to quit R.
|
|
|
|
> library(survival)
|
|
> # the second data set is not sorted by id/date, on purpose
|
|
>
|
|
> df1 <- data.frame(id= 1:10,
|
|
+ y1= as.Date(c("1992-01-01", "1996-01-01", "1997-03-20",
|
|
+ "2000-01-01", "2001-01-01", "2004-01-01",
|
|
+ "2014-03-27", "2014-01-30", "2000-08-01",
|
|
+ "1997-04-29")))
|
|
>
|
|
> df2 <- data.frame(id= c(1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 9, 9, 10,
|
|
+ 3, 3, 6, 6, 8),
|
|
+ y2= as.Date(c("1998-04-30", "2004-07-01", "1999-04-14",
|
|
+ "2001-02-22", "2003-11-19", "2005-02-15", "2006-06-22",
|
|
+ "2007-09-20", "2013-08-02", "2015-01-09", "2014-01-15",
|
|
+ "2006-12-06", "1999-10-20", "2010-06-30", "1997-04-28",
|
|
+ "1995-04-20", "1997-03-20", "1998-04-30", "1995-04-20",
|
|
+ "2006-12-06")))
|
|
>
|
|
> if (FALSE) { # plot for visual check
|
|
+ plot(y2 ~ id, df2, ylim=range(c(df1$y1, df2$y2)), type='n')
|
|
+ text(df2$id, df2$y2, as.numeric(1:nrow(df2)))
|
|
+ points(y1~id, df1, col=2, pch='+')
|
|
+ }
|
|
>
|
|
> i1 <- neardate(df1$id, df2$id, df1$y1, df2$y2)
|
|
> all.equal(i1, c(1, 3, 17, 5, 7, 8, 10, NA, 12, NA))
|
|
[1] TRUE
|
|
>
|
|
> i2 <- neardate(df1$id, df2$id, df1$y1, df2$y2, best="prior")
|
|
> all.equal(i2, c(NA, NA, 17, NA, NA, 18, 9, 11, 13, 15))
|
|
[1] TRUE
|
|
>
|
|
> indx <- order(df2$id, df2$y2)
|
|
> df3 <- df2[indx,]
|
|
> i3 <- neardate(df1$id, df3$id, df1$y1, df3$y2)
|
|
> all.equal(indx[i3], i1)
|
|
[1] TRUE
|
|
>
|
|
> i4 <- neardate(df1$id, df3$id, df1$y1, df3$y2, best="prior")
|
|
> all.equal(indx[i4], i2)
|
|
[1] TRUE
|
|
>
|
|
> indx <- c(2,3,10,9, 4,5, 7,8,1,6)
|
|
> df4 <- df1[indx,]
|
|
> i5 <- neardate(df4$id, df2$id, df4$y1, df2$y2)
|
|
> all.equal(i1[indx], i5)
|
|
[1] TRUE
|
|
>
|
|
> proc.time()
|
|
user system elapsed
|
|
1.000 0.046 1.034
|