पर पुनर्स्थापित करने का सरल तरीका मैं data.frame
को फिर से कैसे बना सकता हूं जिसे मैंने reshape2
से पिघलाया?पिघला हुआ डेटा फ्रेम को मूल
प्रतिलिपि प्रस्तुत करने योग्य उदाहरण
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
क्या मैं dcast
dcast(df, Species~variable, value.var = "value")
# should work but doesn't
अस्थायी समाधान के साथ की कोशिश की है
# 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)
})
मुझे क्या याद आ रही है? यह कुछ स्पष्ट है लेकिन मैं जवाब नहीं समझ सकता। मैंने पहले यहां किसी और के लिए इसका उत्तर भी दिया होगा। अरे।
आपके नमूना आउटपुट के आधार पर, मुझे लगता है कि आप 'id.vars' का उपयोग करने के लिए 'meas.vars' नहीं कर सकते हैं। साथ ही, पिघलने के लिए अपने कॉल में टाइपो को नोटिस करें जो आपके द्वारा देखे जा रहे आउटपुट के लिए डिफ़ॉल्ट हो सकता है। –
हाँ, आपने मेरी गलती पकड़ी। धन्यवाद @ रिकार्डोस्पोर्टा – Maiasaura
समस्या यह है कि चर के आपके संयोजन * विशिष्ट रूप से पंक्ति * की पहचान नहीं करते हैं (क्योंकि आपके पास प्रत्येक संयोजन के लिए कई मान हैं। इस मामले में, आपको 'fun.aggregate' का उपयोग करना होगा। 'मजेदार' जांचें। 'dcast' से कुल 'स्पष्टीकरण। शायद एक विकल्प' unstack (df, value ~ variable) 'और फिर' cbind' 'प्रजातियों का उपयोग इस परिणाम के लिए करना है ..? – Arun