2011-10-24 15 views
13

मैं surveymonkey के साथ बनाए गए एक बड़े सर्वेक्षण का विश्लेषण करने की कोशिश कर रहा हूं जिसमें CSV फ़ाइल में सैकड़ों कॉलम हैं और आउटपुट प्रारूप का उपयोग करना मुश्किल है क्योंकि शीर्षलेख दो पंक्तियों से अधिक चलते हैं।Surveymonkey csv फ़ाइलों को पार्स करने के लिए आर का उपयोग

  • क्या किसी को सीएसवी फ़ाइल में हेडर प्रबंधित करने का एक आसान तरीका मिला है ताकि विश्लेषण प्रबंधनीय हो?
  • अन्य लोग Surveymonkey से परिणामों का विश्लेषण कैसे करते हैं?

धन्यवाद!

+1

आप पोस्ट कर सकते हैं एक * छोटे * SurveyMonkey उत्पादन है कि समस्या को दर्शाता है के उदाहरण? मैं ऐसे समाधान की कल्पना कर सकता हूं जो हेडर को पढ़ने (और मालिश) करने के लिए 'n = 2' के साथ 'readLines'' का उपयोग करता है, और 'पढ़ने' का उपयोग करता है।सीएसवी' के साथ 'skip = 2, header = FALSE' केवल डेटा प्राप्त करने के लिए ... –

+5

अगली बार जब आप कोई सर्वेक्षण चलाते हैं, तो LimeSurvey (http://www.limesurvey.org/) का उपयोग करें - यह खुला स्रोत है और इसमें एक निर्यात टू आर सुविधा जो उचित रूप से अच्छी तरह से काम करती है (प्रकटीकरण: मैंने निर्यात मॉड्यूल लिखा) – Andrie

+0

@ बेन, फ़ाइल में शीर्षलेख दो पंक्तियां प्रश्न नाम/संख्या हैं और फिर नीचे पंक्ति पर लिखे गए सबक्वेस्टियन हैं। आम तौर पर, गधे में कुल दर्द से निपटने के लिए। –

उत्तर

6

क्या मैं अंत में किया था के रूप में

m1 <- read.csv('Sheet1.csv', header=FALSE, skip=1) 

और फिर बस एम 1 $ V10 के खिलाफ विश्लेषण किया बाहर V1, V2, आदि के रूप में लेबल तो मैं सिर्फ फ़ाइल में पढ़ा लिब्रे ऑफिस का उपयोग कर हेडर प्रिंट था , एम 1 $ V23 आदि ...

एकाधिक स्तंभों की गंदगी के आसपास पाने के लिए मैं निम्नलिखित छोटे से समारोह

# function to merge columns into one with a space separator and then 
# remove multiple spaces 
mcols <- function(df, cols) { 
    # e.g. mcols(df, c(14:18)) 
     exp <- paste('df[,', cols, ']', sep='', collapse=',') 
     # this creates something like... 
     # "df[,14],df[,15],df[,16],df[,17],df[,18]" 
     # now we just want to do a paste of this expression... 
     nexp <- paste(" paste(", exp, ", sep=' ')") 
     # so now nexp looks something like... 
     # " paste(df[,14],df[,15],df[,16],df[,17],df[,18] , sep='')" 
     # now we just need to parse this text... and eval() it... 
     newcol <- eval(parse(text=nexp)) 
     newcol <- gsub(' *', ' ', newcol) # replace duplicate spaces by a single one 
     newcol <- gsub('^ *', '', newcol) # remove leading spaces 
     gsub(' *$', '', newcol) # remove trailing spaces 
} 
# mcols(df, c(14:18)) 

कोई संदेह नहीं है किसी को यह साफ करने के लिए सक्षम हो जाएगा इस्तेमाल किया!

Likert की तरह तराजू मैं इस्तेमाल किया को साफ़ रखने के लिए:

# function to tidy c('Strongly Agree', 'Agree', 'Disagree', 'Strongly Disagree') 
tidylik4 <- function(x) { 
    xlevels <- c('Strongly Disagree', 'Disagree', 'Agree', 'Strongly Agree') 
    y <- ifelse(x == '', NA, x) 
    ordered(y, levels=xlevels) 
} 

for (i in 44:52) { 
    m2[,i] <- tidylik4(m2[,i]) 
} 

कोई संदेह नहीं है यह फिर से ऊपर आ जाएगा के रूप में टिप्पणी करने के लिए स्वतंत्र महसूस!

0

निम्न के बारे में: read.csv()header=FALSE के साथ उपयोग करें। दो सरणी बनाएं, एक शीर्षक की दो पंक्तियों और एक सर्वेक्षण के जवाब के साथ। फिर paste() एक साथ दो पंक्तियों/वाक्यों। अंत में, colnames() का उपयोग करें।

+0

जैसा कि दूसरी पंक्ति शून्य वर्णों से शुरू होती है, यह काम नहीं करेगा मैं डरता हूं। – Sean

+0

'if (! Is.null (second.line)) के बारे में कैसे {पेस्ट (first.line, second.line)}'? – power

+1

दुर्भाग्यवश दूसरी पंक्ति पर उपयोगी जानकारी है भले ही यह एक शून्य चरित्र से शुरू हो! – Sean

10

आप एक सुविधाजनक रूप है कि SurveyMonkey से आर फिट बैठता है में यह निर्यात कर सकते हैं, 'उन्नत स्प्रेडशीट स्वरूप' में डाउनलोड प्रतिक्रियाओं को देखने के

surveymonkey export

3

नवंबर 2013 के रूप में, वेब पेज लेआउट बदल गया है लगता है। Analyze results > Export All > All Responses Data > Original View > XLS+ (Open in advanced statistical and analytical software) चुनें। फिर निर्यात पर जाएं और फ़ाइल डाउनलोड करें। आपको पहली पंक्ति = प्रश्न शीर्षलेख/प्रत्येक निम्नलिखित पंक्ति = 1 प्रतिक्रिया के रूप में कच्चा डेटा मिलेगा, यदि आपके पास कई प्रतिक्रियाएं/प्रश्न हैं तो संभवतः एकाधिक फ़ाइलों के बीच विभाजित हो सकते हैं।

enter image description here

0

मुद्दा हेडर के साथ कि "जो भी लागू हो चुनें" के साथ कॉलम एक खाली शीर्ष पंक्ति होगा, और स्तंभ शीर्ष पंक्ति के नीचे हो जाएगा। यह उन प्रकार के प्रश्नों के लिए केवल एक मुद्दा है।

इसे ध्यान में रखते

, मैं एक पाश ने लिखा सभी स्तंभों के माध्यम से जाने के लिए और जो 1.

की एक वर्ण की तो है दूसरी पंक्ति से मूल्य यदि स्तंभ नाम blank- था साथ स्तंभ नाम को बदलने के लिए , आप डेटा की दूसरी पंक्ति को मार सकते हैं और एक साफ डेटा फ्रेम कर सकते हैं।

for(i in 1:ncol(df)){ 
newname <- colnames(df)[i] 
if(nchar(newname) < 2){ 
colnames(df)[i] <- df[1,i] 
} 

df <- df[-1,] 
संबंधित मुद्दे