2016-04-01 17 views
1

aynı adla alandan varolan değeri değiştirmek ve ben şöyle diğerine data.table alanları enjekte biliyorum:data.table: Başka içine bazı veri formu bir data.table birleştirmek gerekir

df1 <- data.table(Id = letters[1:5],a = 1:5) 
df2 <- data.table(Id = letters[1:3],a = 7:9,b=7:9) 
setkey(df1,Id) 
setkey(df2,Id) 
df1[df2,b:=b][] 
#> Id a b 
#> 1: a 1 7 
#> 2: b 2 8 
#> 3: c 3 9 
#> 4: d 4 NA 
#> 5: e 5 NA 

ama alan zaten df1 bulunması halinde deyim çalışmaz:

df1[df2,a:=a][] 
#> Id a 
#> 1: a 1 
#> 2: b 2 
#> 3: c 3 
#> 4: d 4 
#> 5: e 5 

ben saha a zaten 012.394 mevcut olduğundan df1 Bu atama ile değişmez olduğunu anlamakve atama 'un sağ tarafındaki a referansı, df2'da açık değil, bu değere gider. Peki nasıl takip almak için df2$a olanlar ile df1$a yılında seçilen değerlerin değiştirilmesi konusunda giderdim:

#> Id a 
#> 1: a 7 
#> 2: b 8 
#> 3: c 9 
#> 4: d 4 
#> 5: e 5 
+1

kullanımı 'j = a: = i.a' – jangorecki

+0

Teşekkürler! Basit bir çözüm olması gerektiğini biliyordum! Sadece diğerleri için açık olmak gerekirse, j = 'argümanı '[.data.table',' df1 [df2, a: = i.a] gibi – Jthorpe

cevap

4

Kullanım i. önek := aramanın ÜSÖ geçerken.

library(data.table) 
df1 <- data.table(Id = letters[1:5],a = 1:5) 
df2 <- data.table(Id = letters[1:3],a = 7:9,b=7:9) 
df1[df2,a:=i.a][] 

Bu 1.9.7 yılında ?data.table belgelenmiştir.

İleri:. I data.table olduğunda, i sütun önek i kullanarak j ifade edilebilir, örneğin, x [Y (val i.val).]. Burada val, X'in sütununa ve i.val Y'lere karşılık gelir.

İlgili konular