reshape2
ile eritdiğim bir data.frame
yeniden nasıl oluşturulur?Erimiş bir veri çerçevesini yeniden oluşturmanın daha kolay yolu özgün
tekrarlanabilir örnek
library(reshape2)
library(plyr)
data(iris)
df <- melt(iris, id.vars="Species")
head(df)
Species variable value
1 setosa Sepal.Length 5.1
2 setosa Sepal.Length 4.9
3 setosa Sepal.Length 4.7
4 setosa Sepal.Length 4.6
5 setosa Sepal.Length 5.0
6 setosa Sepal.Length 5.4
# Great, I'd like to get the original iris back
Ben dcast
dcast(df, Species~variable, value.var = "value")
# should work but doesn't
geçici çözüm ile denedim ne
# This works but clearly it shouldn't be this hard.
ddply(df, .(Species), function(x) {
Species <- unique(x$Species)
x$id <- 1:dim(x)[1]
x$Species <- NULL
dat <- unstack(x, value~variable)
dat$Species <- Species
return(dat)
})
Neyi özlüyorum? Bu açık bir şey ama cevabı çözemiyorum. Daha önce burada bir başkası için cevaplamış olabilirim. argh. Bir öğenin ait orijinal hangi satırı belirtmek için işaretleyici çeşit katmak Eğer
Örnek çıktınıza bağlı olarak, 'id.vars' ölçüsü 'var' anlamına geleceğini sanmış olabilirsiniz. Ayrıca, göründüğünüz çıktıya varsayılan olabilecek erteleme çağrınızdaki yazım hatası farkedin. –
Evet, benim hatamı yakaladın. Teşekkürler @RicardoSaporta – Maiasaura
Sorun şu ki, değişkenler * kombinasyonunuz benzersiz bir şekilde satır * tanımlamıyor (her kombinasyon için birden fazla değer kullandığınız gibi. Bu durumda, fun.aggregate'i kullanmak zorundasınız. '' dcast '' topluluğunun açıklama 'Belki de bir alternatif' unstack (df, value ~ variable) 've sonra bu sonuca' cbind' 'Türler' kullanmaktır ..? – Arun