Üç 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...