在大数据框中集成表

时间:2013-05-25 12:15:05

标签: r dataframe

我有三张桌子

第一个表包括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

1 个答案:

答案 0 :(得分: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

然后你可以为错过的event_type指定0:

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)