SORU
1 AĞUSTOS 2011, PAZARTESİ


Uygun/en hızlı yolu, bir veri yeniden şekillendirmek için.tablo

R data table bir:

library(data.table)
set.seed(1234)
DT <- data.table(x=rep(c(1,2,3),each=4), y=c("A","B"), v=sample(1:100,12))
DT
      x y  v
 [1,] 1 A 12
 [2,] 1 B 62
 [3,] 1 A 60
 [4,] 1 B 61
 [5,] 2 A 83
 [6,] 2 B 97
 [7,] 2 A  1
 [8,] 2 B 22
 [9,] 3 A 99
[10,] 3 B 47
[11,] 3 A 63
[12,] 3 B 49

Kolayca veri grupları tarafından v değişkeni toplam edebilirim.tablo:

out <- DT[,list(SUM=sum(v)),by=list(x,y)]
out
     x  y SUM
[1,] 1 A  72
[2,] 1 B 123
[3,] 2 A  84
[4,] 2 B 119
[5,] 3 A 162
[6,] 3 B  96

Ancak, gruplar (y) sütun yerine satır olarak almak istiyorum. Bu reshape kullanarak başarabilirim:

out <- reshape(out,direction='wide',idvar='x', timevar='y')
out
     x SUM.A SUM.B
[1,] 1    72   123
[2,] 2    84   119
[3,] 3   162    96

Daha verimli bir şekilde toplayarak sonra verileri yeniden şekillendirmek için var mı? Bir adım bu işlemleri, verileri kullanarak birleştirmek için bir yolu var.tablo işlemleri?

CEVAP
2 AĞUSTOS 2011, Salı


Güncelleme 3:GH Efficient reshaping using data.tables yeni bir skeç


Güncelleme 2:Sürüm 1.9.5 reshape2 yüklemeye gerek yok dcast() doğrudan .data.table() gerek yok diyebilirsiniz.


Güncelleme: veri/dcast fonksiyonları eritin.tablo sürümleri mevcuttur >=1.9.0:

Sürüm ^ data.table. =1.9.0 içeren özel melt dcast fonksiyonlar (C ile yazılmış) yeniden şekillendirilmesi veri için.tablo.

melt S3 genel reshape2 ve bu nedenle kullanım melt data.table ile aynıdır nasıl kullandın daha önce (sonra yükleme reshape2 de). Ancak, şu anda, Eğer isterseniz veri dcast(...) yerine dcast.data.table(...) kullanman gerekecek.tablo verilerinizi atama işlevi.dcast tablo reshape2 henüz bir S3 genel. Bu listede yapılacak.

HABER:

o Hızlı reshape2yöntemleri'seritinvedcastdata.table, FR#2627 için uygulanmaktadır. En ayarları 25**, ?melt.data.table görmek için aynıdır.

melt : 10 milyon satır ve 5 sütun, 61.3 saniyede 1.2 saniye ile sınırlı.
dcast : 1 milyon satır ve 4 sütun, 192 saniye 3.6 saniye ile sınırlı.

  • melt.data.table tip sütunlar üzerinde eritme kapasitesine sahip 'liste'.
  • melt.data.table sırasıyla varsayılan olarak TRUE FALSE variable.factor value.factor reshape2 ile uyumluluk için kazanır. Bu doğrudan variable value çıktı türü sütun faktörler olarak ya da kontrol etmek için izin verir.
  • melt.data.table'ler NAs doğrudan Erime sırasında kaldırmak için optimize edilmiş olduğunu ve bu nedenle gömmeyi yükü daha sonra erimiş veri !is.na parametre kullanarak önler. na.rm = TRUE
  • margins hariç reshape2:::dcast, dcast tüm özellikler argümanı sağlam. dcast.data.table tip listesi value.var sütun kabul edebilir.

Köln hatırlatma (Aralık 2013) slayt 32 sunum : "Neden dcast çekme isteği değil 47**?" : 50* *

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • buttheadgsxr1000

    buttheadgsxr

    24 Ocak 2008
  • TomOdellVEVO

    TomOdellVEVO

    29 Mayıs 2012
  • Triune Films

    Triune Films

    9 ŞUBAT 2006