ile R birleştirme Ben iki data.tables
: samples, resources
Çapraz/Yeni gruplama birleştirme/data.table en X [E] şeklini
resources
primary
ve secondary
kimlikleri ile samples
ile bağlanır. Kaynaklardan gelen bilgileri öncelikle birincil tabloyu kullanarak örnek tablo ile birleştirmek istiyorum ve bu yalnızca NA üretiyorsa, o zaman aynı tablodaki ikincil kaynaklara başvurmak istiyorum (bir data.table komut zincirinde) .
# resources:
primary secondary info
1: 17 42 "I"
2: 18 NA "J"
3: 19 43 "K"
# samples:
name primary secondary
1: "a" 17 55
2: "b" 0 42
3 "c" 18 42
istenen sonucu olacaktır: primary
aracılığıyla
# joined tables:
name info # primary secondary
1: "a" "I"
2: "b" "I"
3: "c" "J"
ilk olarak katılmak daha sonra
# Update:
samples <- data.table(name = letters[1:3],
primary = c(17, 0, 18),
secondary = c(55, 42, 42))
resources <- data.table(primary = 17:19,
secondary = c(42, NA, 43),
info = LETTERS[9:11])
# first join:
setkey(samples, primary)
setkey(resources, primary)
samples[resources]
name info # primary secondary
1: "a" "I"
2: "b" NA
3: "c" "J"
Ama üretir, kolay? setkey(samples, secondary)
ile örnekleri yeniden anahtarlamam gerekiyor, değil mi? Ve sonra sadece NA'ları üreten satırlara ayırın. Ancak bütün bunlar bir komuta zincirinde gerçekten mümkün değildir (ve iki kriterin birden fazla olduğunu hayal edin ...). Bunu daha kısa sürede nasıl başarabilirim?
... data.tables koduyla güncellendi.
Belki de 'örnekler' ve 'kaynakları' yapılarını oluşturan kodları dahil ederek kolayca yeniden üretilebilir hale getirin? –
'data.table' dostu değil, ancak yararlı olması durumunda: http: // stackoverflow.com/questions/11369837/nasıl yapılır-nasıl-koşullu-left-join-in-r – npjc
tek bir komut zincirinde yapmak isteyen yanlış yönlendirilmiş – eddi