Üç sütun veri matrisi için çerçeve yeniden şekillendirmek
Bu gibi görünüyor data.frame Bir ben var.
x a 1
x b 2
x c 3
y a 3
y b 3
y c 2
Bu bir komplo yapmak için ısı haritası için beslenmem matris formunda bunu istiyorum. Sonuç aşağıdaki gibi görünmelidir:
a b c
x 1 2 3
y 3 3 2
cast paket yeniden şekillendirmek dan denedim ve bunu yapmak için el ile bir fonksiyon yazmaya çalıştım ama başaramadım.
CEVAP
Bunu yapmak için birçok yol vardır. Bu cevap benim en sevdiğim yollar ile başlar, ama aynı zamanda benzer soruların cevaplarını çeşitli şekillerde bu site dağılmış toplar.
tmp <- data.frame(x=gl(2,3, labels=letters[24:25]),
y=gl(3,1,6, labels=letters[1:3]),
z=c(1,2,3,3,3,2))
Reshape2 kullanarak:
library(reshape2)
acast(tmp, x~y, value.var="z")
Matris indeksleme kullanarak:
with(tmp, {
out <- matrix(nrow=nlevels(x), ncol=nlevels(y),
dimnames=list(levels(x), levels(y)))
out[cbind(x, y)] <- z
out
})
xtabs kullanarak:
xtabs(z~x y, data=tmp)
Ayrıca burada önerilen reshape kullanabilirsiniz: küçük bir manipülasyon daha sonra yapmak için fazladan bir sütun Kaldır ve isim hakkı (gösterilmez). almak için olsa da Convert table into matrix by column names,
> reshape(tmp, idvar="x", timevar="y", direction="wide")
x z.a z.b z.c
1 x 1 2 3
4 y 3 3 2
Burada görüldüğü gibi aynı zamanda Matrix paket içinde sparseMatrix var: R - convert BIG table into matrix by column names
> with(tmp, sparseMatrix(i = as.numeric(x), j=as.numeric(y), x=z,
dimnames=list(levels(x), levels(y))))
2 x 3 sparse Matrix of class "dgCMatrix"
a b c
x 1 2 3
y 3 3 2
plyr kütüphane daply işlevi de kullanılabilir, burada: http://stackoverflow.com/a/7020101/210673
> library(plyr)
> daply(tmp, .(x, y), function(x) x$z)
y
x a b c
x 1 2 3
y 3 3 2
Reshape2 dcast da çalışır, burada: Reshape data for values in one column ama bir veri olsun.x değeri için bir sütun ile çerçeve.
> dcast(tmp, x~y, value.var="z")
x a b c
1 x 1 2 3
2 y 3 3 2
"Tidyr" de böyle bir değişim için çalışmak: . benzer şekilde, spread
library(tidyr)
spread(tmp, y, z)
# x a b c
# 1 x 1 2 3
# 2 y 3 3 2

Uygun/en hızlı yolu, bir veri yeniden ...
R sütun bırak veri çerçeve...
vim 80 sütun/kuvvet metni yeniden yapı...
Nasıl bir kare sütun veri türü sayısal...
SQL server Veri tipleri, BOÅž bir not i...