2016-08-15 87 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)]