给出这样的长格式数据集:
ID_2<-c('A','A','A','B','B','C','E','E','F','F','H','H','H')
Type<-c('Blk','Wht','Gre','Blk','Wht','Blk','Blk','Wht','Blk','Wht','Wht','Blk','Gre')
Count<-c(1,2,2,1,2,1,2,1,2,1,2,1,2)
DF2<-data.frame(ID_2,Type,Count)
我想为每个唯一ID(ID_2)添加一组特定的元数据。元数据可以在单独的数据框中找到,如下所示:
Year<-c(2005,2005,2006,2006,2007,2008,2008,2008)
Location<-c('EAST','EAST','WEST','WEST','NORTH','EAST','EAST','EAST')
Site<-c(1,2,3,4,5,6,7,8)
ID_1<-c('A','B','C','NAN','E','F','NAN','H')
DF1<-data.frame(Year,Location,Site,ID_1)
我想将DF1中的元数据添加到DF2的长格式(匹配ID_1和ID_2),以便DF2的每一行都包含来自DF1的正确元数据
我还需要处理空白位置,以便DF_1中没有DF_2中相应数据条目的任何唯一站点编号都会获得标记条目。最终结果如下:
Year Location Site ID Type Count
2005 EAST 1 A Blk 1
2005 EAST 1 A Wht 2
2005 EAST 1 A Gre 2
2005 EAST 2 B Blk 1
2006 WEST 3 C Blk 1
2007 NORTH 5 E Blk 2
2007 NORTH 5 E Wht 1
2008 EAST 6 F Blk 2
2008 EAST 6 F Wht 1
2008 EAST 8 H Wht 2
2008 EAST 8 H Blk 1
2008 EAST 8 H Gre 2
2006 WEST 4 Flag Flag -999
2008 EAST 7 Flag Flag -999
答案 0 :(得分:2)
这似乎是一个简单的merge()
> merge(DF1, DF2, by.x = "ID_1", by.y = "ID_2", all = TRUE)
ID_1 Year Location Site Type Count
1 A 2005 EAST 1 Blk 1
2 A 2005 EAST 1 Wht 2
3 A 2005 EAST 1 Gre 2
4 B 2005 EAST 2 Blk 1
5 B 2005 EAST 2 Wht 2
6 C 2006 WEST 3 Blk 1
7 E 2007 NORTH 5 Blk 2
8 E 2007 NORTH 5 Wht 1
9 F 2008 EAST 6 Blk 2
10 F 2008 EAST 6 Wht 1
11 H 2008 EAST 8 Wht 2
12 H 2008 EAST 8 Blk 1
13 H 2008 EAST 8 Gre 2
14 NAN 2006 WEST 4 <NA> NA
15 NAN 2008 EAST 7 <NA> NA
您需要做一些额外的工作来将NA
值替换为您实际想要使用的任何值。