मैंने एक अध्ययन किया कि, पीछे की ओर (एक जीवन, एक सीखता है :-)) बहुस्तरीय डेटा उत्पन्न करता प्रतीत होता है। अब मैं डेटासेट को व्यापक से लंबे समय तक पुन: स्थापित करने की कोशिश कर रहा हूं ताकि मैं इसका उपयोग करके इसका विश्लेषण कर सकूं। lme4।मैं 'चौगुनी घोंसले' के साथ एक बहुस्तरीय संरचना के लिए एक विस्तृत डेटा फ्रेम को एक लंबे डेटाफ्रेम में कैसे परिवर्तित करूं?
ऐसा करने में, मुझे एक, उम, चुनौती का सामना करना पड़ता है, कि मैंने कुछ बार पहले भाग लिया है, लेकिन जिसके लिए मुझे कभी भी अच्छा समाधान नहीं मिला है। मैंने इस बार फिर से खोज की है, लेकिन शायद मैं गलत कीवर्ड का उपयोग करता हूं - या यह समस्या मैंने सोचा जितना दुर्लभ है।
असल में, इस डेटासेट में, variablenames इंगित करता है कि कौन सा उपाय डेटा एकत्र किया जाता है। मैंने प्रतिभागियों को ग्रेड (दर) हस्तक्षेप के लिए कहा (वास्तव में कुछ भी हो सकता है)। प्रत्येक हस्तक्षेप 6 व्यवहार डोमेन में से एक में है। इसके अलावा, प्रतिभागियों ने प्रत्येक हस्तक्षेप को या तो खुद को प्रस्तुत किया, या साथ ही साथ एक दूसरे हस्तक्षेप के साथ, या दो अन्य हस्तक्षेपों के साथ मूल्यांकन किया। तीन प्रकार के हस्तक्षेप थे, और वे सभी (टी 0) से पहले रेट किए गए थे और बाद में (टी 1) मैंने उन्हें कुछ जानकारी प्रदान की थी।
तो, प्रभाव में, मैं एक dataframe है कि इस तरह से पुनर्जीवित किया जा सकता है:
### Elements of the variable names
measurementMomentsVector <- c("t0", "t1");
interventionTypesVector <- c("fear", "know", "scd");
nrOfInterventionsSimultaneouslyVector <- c(1, 2, 3);
behaviorDomainsVector <- c("diet", "pox", "alc", "smoking", "traff", "adh");
### Generate a vector with all variable names
variableNames <-
apply(expand.grid(measurementMomentsVector,
interventionTypesVector,
nrOfInterventionsSimultaneouslyVector,
behaviorDomainsVector),
1, paste0, collapse="_");
### Generate 5 'participants' worth of data
wideData <- data.frame(matrix(rnorm(5*length(variableNames)), nrow=5));
### Assign names
names(wideData) <- variableNames;
### Add unique id variable for every participants
wideData$id <- 1:5;
तो head(wideData)[, 1:5]
का उपयोग कर आप मोटे तौर पर क्या dataframe लग रहा है देख सकते हैं जैसे:
t0_fear_1_diet t1_fear_1_diet t0_know_1_diet t1_know_1_diet t0_scd_1_diet
1 -0.9338191 0.9747453 1.0069036 0.3500103 -0.844699708
2 0.8921867 1.3687834 -1.2005791 0.2747955 1.316768219
3 1.6200200 0.5245470 -1.2910586 1.3211912 -0.174795144
4 0.1543738 0.7535642 0.4726131 -0.3464789 -0.009190702
5 -1.3676692 -0.4491574 -2.0902003 -0.3484678 -2.537501824
अब, मैं इस डेटा को 6 चर के साथ एक लंबे डेटाफ्रेम में कनवर्ट करना चाहते हैं, उदाहरण के लिए 'आईडी', 'मापनमेंट मॉमेंट', 'हस्तक्षेप टाइप', 'एनआरओएफ इंटरवेंशन' साथ-साथ ',' व्यवहारडोमेन 'और' मूल्यांकन ', जहां पहला चर प्रतिभागियों को दर्शाता है एक रिकॉर्ड संबंधित है, लास टी परिवर्तनीय स्कोर (रेटिंग, ग्रेड, मूल्यांकन) प्रतिभागियों ने एक विशिष्ट हस्तक्षेप दिया है, और बीच में चार चर बताते हैं कि कौन सा हस्तक्षेप बिल्कुल मूल्यांकन किया जा रहा है।
मैं शायद इस समस्या के लिए कुछ 'कस्टम' कोड लिख सकता हूं, लेकिन मुझे उम्मीद है कि आर के पास इसके लिए कुछ है। मैं reshape2 के साथ प्रयोग करना किया गया है, जैसे:
longData <- reshape(wideData, varying=1:(ncol(wideData)-1),
idvar="id",
sep="_", direction="long")
लेकिन यह समय-अलग चर का अनुमान लगाना प्रबंधित नहीं करता है:
Error in guess(varying) :
failed to guess time-varying variables from their names
मैं अब इस में कुछ समय के साथ संघर्ष कर रहा है, और मैं ऑनलाइन कोई जवाब खोजने का प्रबंधन नहीं करता हूं। और अब मुझे वास्तव में आगे बढ़ने की जरूरत है, इसलिए मैंने सोचा कि मैं इसे कस्टम-निर्मित लिखने का प्रयास करने से पहले आखिरी प्रयास के रूप में कोशिश करूंगा :-)
मैं किसी भी पॉइंटर्स को किसी भी पॉइंटर्स की सराहना करता हूं !!!
'firstSecondOccurrenceVector' का मूल्य क्या है? – krlmlr
क्षमा करें, इससे पहले कि मैंने इसे थोड़ा सा स्पष्ट किया था, वह बाएं ओवर था! यह अब महत्वपूर्ण नहीं है :-) भ्रम के लिए खेद है! – Matherion
माफी माँग मत करो। इसके बजाय कोड संपादित करें ताकि यह चलता है। –