如何解决根据其他2列按组扩展日期范围-
我需要按邮政编码合并两个表,以便表 ID_dates 中的日期范围应包含表中的范围 zipcodes 。
数据说明:
表 ID_dates 给出的事前和事后信息涵盖了 ID_dates 的整个日期范围。
ID和pre的组合为该组提供了唯一的组合,其中邮政编码范围必须位于其中。
ID_dates 中的范围是连续的,没有间隔。
邮政编码是字符串,但是在下面的示例中我无法将R读作字符(我是R的新手,所以请原谅我在以下代码中的错误,如果有的话)
邮政编码中的范围不包括前置和后置范围。 邮政编码中的范围可能在 ID_dates 中的前后日期之外,因此 zipcode 的开始日期和结束日期必须被截断。对于每个组(邮政编码和ID的组合),端点分别为pre和post。
zipcodes <- read.table(text="
zipcode start end var1
08210 03/15/1992 03/29/1992 1
08210 06/29/1993 06/30/1993 2
07039 03/28/1992 03/31/1992 5
07046 06/6/1994 06/6/1994 1
",colClasses='character',header=T,stringsAsFactors=F)
zipcodes$start <- as.Date(zipcodes$start,format = "%m/%d/%y")
zipcodes$end <- as.Date(zipcodes$end,format = "%m/%d/%y")
ID_dates <- read.table(text="
ID zipcode t1 t2 pre post var2
A 08210 03/17/1992 03/28/1992 03/17/1992 06/01/1993 1
A 08210 03/29/1992 04/05/1992 03/17/1992 06/01/1993 2
A 07039 04/06/1992 06/01/1993 03/17/1992 06/01/1993 3
A 07046 07/07/1995 08/07/1995 07/07/1995 08/07/1995 5
B 90002 01/01/1996 02/01/1996 01/01/1996 02/01/1996 8
",stringsAsFactors=F)
ID_dates$t1 <- as.Date(ID_dates$t1,format = "%m/%d/%y")
ID_dates$t2 <- as.Date(ID_dates$t2,format = "%m/%d/%y")
ID_dates$pre <- as.Date(ID_dates$pre,format = "%m/%d/%y")
ID_dates$post <- as.Date(ID_dates$post,format = "%m/%d/%y")
finaltable <- read.table(text="
id zipcode t1 t2 var1 var2
A 08210 03/17/1992 03/28/1992 1 1
A 08210 03/29/1992 04/05/1992 NA 2
A 07039 04/06/1992 06/01/1993 NA 3
A 07046 07/07/1995 08/07/1995 NA 5
B 90002 01/01/1996 02/01/1996 NA 8
",stringsAsFactors=F)
我无法编写代码来达到上述效果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。