का उपयोग कर किसी सब्सक्रिप्शन पर संचालन करना मेरे पास विस्तृत रूप में एक सर्वेक्षण डेटा सेट है। किसी विशेष प्रश्न के लिए कच्चे आंकड़ों में चर के एक सेट को इस तथ्य का प्रतिनिधित्व करने के लिए बनाया गया था कि एक विशेष महीने में सर्वेक्षण प्रश्न पूछा गया था।डेटा तालिका
मैं उन चर के नए सेट बनाना चाहता हूं जिनमें महीने-परिवर्तनीय नाम हैं; इन चर के मूल्य को महीने के लिए एक महीने-भिन्न प्रश्न के मूल्य के अनुरूप होगा। वहाँ वास्तव में केवल दो सवाल कर रहे हैं इस सर्वेक्षण में
require(data.table)
data <- data.table(month = rep(c('may', 'jun', 'jul'), each = 5),
may.q1 = rep(c('yes', 'no', 'yes'), each = 5),
jun.q1 = rep(c('breakfast', 'lunch', 'dinner'), each = 5),
jul.q1 = rep(c('oranges', 'apples', 'oranges'), each = 5),
may.q2 = rep(c('econ', 'math', 'science'), each = 5),
jun.q2 = rep(c('sunny', 'foggy', 'cloudy'), each = 5),
jul.q2 = rep(c('no rain', 'light mist', 'heavy rain'), each = 5))
,: "q1" और "Q2"
कृपया एक उदाहरण/काल्पनिक डेटा सेट को देखते हैं। इन सवालों में से प्रत्येक बार बार-बार पूछे जाते हैं। हालांकि, अवलोकन में केवल वैध प्रतिक्रिया होती है यदि डेटा में देखा गया महीना किसी विशेष महीने के लिए सर्वेक्षण प्रश्न के साथ मेल खाता है।
उदाहरण के लिए: "मई" में किसी भी अवलोकन के लिए "may.q1" को "हां" के रूप में देखा जाता है। मुझे "may.q1", "jun.q1", और "jul.q1" का प्रतिनिधित्व करने के लिए एक नया "क्यू 1" वैरिएबल चाहिए। "क्यू 1" का मान "मई" होने पर "may.q1" के मान पर होगा, और "क्यू 1" का मूल्य "जून 1" के मूल्य पर होगा जब माह "जून" होगा ।
अगर मैं कोशिश करते हैं और डेटा तालिका का उपयोग कर हाथ से यह करने के लिए थे, मैं की तरह कुछ चाहेगा:
mdata <- data[month == 'may', c('month', 'may.q1', 'may.q2'), with = F]
setnames(mdata, names(mdata), gsub('may\\.', '', names(mdata)))
मैं "= महीने से" इस दोहराया चाहते हैं। ,
require(plyr)
data <- data.frame(data)
mdata <- ddply(data, .(month), function(dfmo) {
dfmo <- dfmo[, c(1, grep(dfmo$month[1], names(dfmo)))]
names(dfmo) <- gsub(paste0(dfmo$month[1], '\\.'), '', names(dfmo))
return(dfmo)
})
एक data.table विधि का उपयोग कर किसी भी मदद की बहुत सराहना की जाएगी मेरी डेटा के रूप में:
अगर मैं एक डेटा फ्रेम के लिए "plyr" पैकेज का उपयोग करने के लिए गए थे, मैं निम्नलिखित दृष्टिकोण का उपयोग कर हल किया बड़े हैं धन्यवाद।
ओह वाह उपयोग कर सकते हैं .. मैं इस के बारे में सोच सहारे चाहते हैं! बहुत बढ़िया। – Arun
मैथ्यूडॉउल, यह * निश्चित रूप से * (मेरी) पिघला + कास्ट से तेज है। मैंने इसे एक बड़े डेटा पर आज़माया। मेरा कोई नजदीक नहीं है ... 1e5 * 100 कॉलम पर 23 सेकंड लगते हैं जबकि यह एक सेकंड से भी कम समय में होता है! – Arun