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
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ı
reshape2
yö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 olarakTRUE
FALSE
variable.factor
value.factor
reshape2
ile uyumluluk için kazanır. Bu doğrudanvariable
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 listesivalue.var
sütun kabul edebilir.Köln hatırlatma (Aralık 2013) slayt 32 sunum : "Neden
dcast
çekme isteği değil 47**?" : 50* *
Üç sütun veri matrisi için çerçeve yen...
En hızlı büyük veri NAs değiştirmek iç...
Hızlı mysql bir tablo kopyalamak için ...
Bir tamsayı'in kare kökü belirlem...
Otomatik oluşturmak SQL Server tablo i...