2016-06-08 12 views
5

Bazı analizleri tamamlamak için data.table paketini kullanıyorum. Aldığım adımlardan biri, toplu istatistik elde etmek için by = işlevini kullanmayı içerir. Bununla birlikte, kümelerin her bir by alt kümesindeki benzersiz sonuçlarda hesaplanması gerekir. Her bir by grubunun ayrı kayıtlardan oluştuğundan emin olmak için unique ve anahtarlarını kullanıyorum. belli belirsiz aşağıda gibi bir şey:R'nin data.table dosyasında, .SD kullanılarak başvurulan altküme korunan bir data.table anahtarı nasıl açılır?

dt_new <- dt_old[,uFunc_MyFunction(x = unique(.SD)),by = grouping_var] 

Ben .SD anahtar dt_old için anahtar seti ve by = açıklamada bağlı olarak değişebileceği gibi görünüyordu fark ettim. Açıkçası, sonuçta ortaya çıkan alt kümelerin benzersiz olup olmadığı üzerinde bir etkisi oldu.

Biraz netlik elde etmek istedim, bu yüzden aşağıda yazdım. Anlamaya çalışıyorum ne

library(data.table) 
set.seed(1554) 
dt_example <- data.table(id = 1:50, 
         site = sample(x = c("A","B","C"), 
             size = 50, 
             replace = TRUE, 
             prob = c(0.4,0.4,0.2)), 
         group = sample(x = c("Eta","Mu","Omicron","Psi"), 
             size = 50, 
             replace = TRUE), 
         team = sample(x = 1:3, 
             size = 50, 
             replace = TRUE, 
             prob = c(0.2,0.3,0.5))) 

setkey(x = dt_example, 
     group, 
     team) 

> dt_example[,as.list(key(.SD)),by = site] 
    site V1 V2 
1: B group team 
2: A group team 
3: C group team 

setkey(x = dt_example, 
     site, 
     group, 
     team) 

> dt_example[,as.list(key(.SD)),by = site] 
Empty data.table (0 rows) of 1 col: site 

ikinci versiyonunda, .SD hiç anahtarı vardı, Birinci versiyonda, .SD için anahtar, tutarlı olmasının nedeni vardır. by = sütununun doğrudan anahtarını ihlal eden .SD numaralı telefona dahil edilmemesi ile ilgili bir şey olduğunu düşünüyorum, ancak mantığımı doğrulamak istedim.

Yani, sorum şu: Bir veri tablosunun alt kümesi, by gruplandırma değişkeni olarak ana veri tablosunun anahtarını içeren sütunlardan biri kullanıldığında, anahtarın hiçbiri, .SD anahtar içermiyor mu?

+1

için muhtemelen. – eddi

+0

@eddi FR nedir? – TARehman

+0

FR = Özellik İsteği – Jaap

cevap

3

Bu durumda, site ile gruplandırılırken site, group, team tarafından sıralandığı için, anahtar, siparişin korunacağı şekilde group, team için saklanabilir. En basit cevap bu olayı kaçırmış gibi görünüyor. Bu gönderiye yalnızca bir bağlantı içeren bir sorun bildirir misiniz?

Etrafta bir çalışma olarak, sütunları belirtmek üzere data.tables için unique yönteminde by bağımsız değişkenini kullanabilirsiniz.

Ve Davut her grup unique(.SD) kullanarak belirttiği gibi

gereksiz görünüyor, ama bu bu soru gerçekten sadece bir FR olan başka Q

+0

Bir sorunu geçici olarak kaydederim. Ve ben benzersiz (.SD) 'nin alışılmadık bir kullanım durumu olduğunu kabul ediyorum. Gerçekten "sabit" olmasını beklemezdim - sadece kaputun altında ne olduğunu merak ediyordum. – TARehman

+1

Github'da 1736 olarak dosyalandı. Https://github.com/Rdatatable/data.table/issues/1736 – TARehman

İlgili konular