2016-08-15 75 views
6

我有两个map/data.tables。一个由键值组成,另一个由一些键组成。我想将第一张地图的值映射到第二张地图的关键字。如何才能做到这一点?如何将data.table中的值映射到data.table(R)

下面是一些示例代码:

map1<-data.table(k=c("A","B"), v=c(2,3)) 
map2<-data.table(k2=c("A","B","A","A")) 

我怎么可能产生新列V2在MAP2中包含c(2,3,2,2)?

+0

你有没有通过[入门护身符(https://github.com/Rdatatable/data阅读。表/维基/快速启动的)? – MichaelChirico

回答

14

使用data.table加入:

map1[map2, v, on = c(k = "k2")] 
#[1] 2 3 2 2 

map2[map1, v2 := v, on = c(k2 = "k")] 
# k2 v2 
#1: A 2 
#2: B 3 
#3: A 2 
#4: A 2 
3

试试这个使用base R

map2$v2 <- map1$v[match(map2$k2,map1$k)]