0

我有三张桌子

第一个表包括 ID First_date,Birthday,Sex

ID First_date Birthday Sex
1    19970104 19940921   M
2    19970107 19561224   F
3    20061228 19320426   M
4    20070231 19780825   F
5    20071231 19421206   F

第二个表包括 ID event_type event_time

ID  event_type  event_time
2       1        19990211     
4       1        20071226

第三个表包括 ID event_type event_time

ID  event_type   event_time
1     2          19990219
3     2          20070228

然后我想要整合表

ID   First_date Birthday Sex  event_type   event_time
1    19970104 19940921   M      2          19990219
2    19970107 19561224   F      1          19990211 
3    20061228 19320426   M      2          20070228
4    20070231 19780825   F      1          20071226
5    20071231 19421206   F      0             NA    

id5 不在二表和三表中,因此 event_type 将编码为 0

4

1 回答 1

0

你可以merge在这里使用:

 res <- merge(dat1,rbind(dat2,dat3),all.x=TRUE)
 ID First_date Birthday Sex event_type event_time
1  1   19970104 19940921   M          2   19990219
2  2   19970107 19561224   F          1   19990211
3  3   20061228 19320426   M          2   20070228
4  4   20070231 19780825   F          1   20071226
5  5   20071231 19421206   F         NA         NA

然后您可以将 0 分配给错过的 event_type :

res$event_type[is.na(res$event_type)] <- 0

这里的数据表是:

dat1 <- read.table(text='ID First_date Birthday Sex
1    19970104 19940921   M
2    19970107 19561224   F
3    20061228 19320426   M
4    20070231 19780825   F
5    20071231 19421206   F',header=TRUE)

dat2 <- read.table(text='ID  event_type  event_time
2       1        19990211     
4       1        20071226',header=TRUE)

dat3 <- read.table(text='ID  event_type   event_time
1     2          19990219
3     2          20070228',header=TRUE)
于 2013-05-25T12:21:03.460 回答