Veri sütunumda index1
& index2
ortak sütunlarına göre bir arama tablosuyla birleştirerek yeni bir sütun key
oluşturmak istiyorum. Daha sonra bu yeni key
kolonu (a
, b
, c
) değerlerinden, bir data.table içinde value
sütun indisleri 3 yeni sütun (a
, b
, c
) oluşturmak üzere istiyorum. BöyleArama tablosundaki data.table sütunları eklemek için daha iyi bir yol aranıyor
Benim data.table görünüyor:
index1 index2 key
1 1 1 a
2 1 2 b
3 2 1 a
4 2 2 c
5 3 1 c
6 3 2 b
Sonuçta şu şekildedir:
index1 index2 value key a b c
1 2 0 0.00 NA NA NA NA
2 1 2 -5.00 b NA -5.00 NA
3 3 2 -5.00 b NA -5.00 NA
4 3 2 17.50 b NA 17.50 NA
5 2 2 15.00 c NA NA 15.00
6 1 2 -7.50 b NA -7.50 NA
7 3 2 3.75 b NA 3.75 NA
8 1 2 -8.75 b NA -8.75 NA
9 2 1 15.00 a 15.00 NA NA
10 2 1 12.50 a 12.50 NA NA
bunu çözme çalıştı
index1 index2 value
1 2 0 0.00
2 1 2 -5.00
3 3 2 -5.00
4 3 2 17.50
5 2 2 15.00
6 1 2 -7.50
7 3 2 3.75
8 1 2 -8.75
9 2 1 15.00
10 2 1 12.50
arama tablosu şudur önce data.table ve arama tablosunu merge()
ile birleştirerek, J()
thre Yukarıdaki sonuca ulaşmak için ayrı zamanlar. Ben data.table için oldukça yeni, ama birkaç kez prosedürü tekrarlamak yerine bunu çözmek için daha zarif bir yol öğrenmek isterim. Eğer & index2 index1 üzerinde katılmak isteyen beri var gibi merge
kullanabilir ya da tablolardan her anahtarları olarak bu atarsanız, o zaman sadece katılmak için []
kullanabilirsiniz
DT <- merge(DT, lookup, by=c('index1', 'index2'), all.x=TRUE)
DT <- data.table(DT) #Don't know why but DT became a data.frame after merge()
DT[J("a"), a:=value]
DT[J("b"), b:=value]
DT[J("c"), c:=value]
Son bölümü tam olarak almıyorum: 'data.table'daki değeri endeksleyen 3 yeni sütun (a, b, c) oluşturmak istiyorum. Burada ne demek istiyorsun? Son çıktınızı gösterebilir mi? Ayrıca NA 'tuşlarını nasıl ele almak istersiniz? her iki şekilde bir araya getirme, 'NA' yaratır ... – Arun
Özür dilerim. Kod bloklarını nasıl etiketleyeceğimizi anlamaya çalışıyordum. Şimdi tamamen düzenlenmiş. – SeanM
, 'birleştirme 'kullanmayın. Bunun yerine '[DT]' yi kullanın ('X [Y]' sözdizimi). Tabii ki bunu yapmadan önce her iki tablo anahtarını 'index1, index2' olarak ayarlamanız gerekir. – Arun