2011-10-24 26 views
13

CSV dosyasında yüzlerce sütuna sahip olan surveymonkey ile oluşturulan büyük bir araştırmayı analiz etmeye çalışıyorum ve çıktıların başlıkların iki satır üzerinde çalışması zor.Surveymonkey csv dosyalarını ayrıştırmak için R'yi kullanma

  • Herhangi bir kişi, CSV dosyasındaki başlıkları yönetmenin basit bir yolunu buldu, böylece analiz yönetilebilir mi?
  • Diğer insanlar, Surveymonkey sonuçlarını nasıl analiz eder?

Teşekkürler!

+1

Sorunu gösteren bir * küçük * Surveymonkey çıktısı örneği gönderir misiniz? Başlıkları okumak ve (masaj yapmak) için 'n = 2' ile 'readLines' kullanan bir çözüm hayal edebiliyorum ve 'read'i kullanıyor.csv' ile 'skip = 2, header = FALSE' sadece veriyi almak için ... –

+5

Anketi çalıştırdığınızda LimeSurvey (http://www.limesurvey.org/) adresini kullanın. Oldukça iyi çalışan bir R'ye aktarma (açıklama: ihracat modülünü yazdım) – Andrie

+0

@ Ben, dosyadaki başlıklar iki satırlık soru adı/numarası ve alt satırda yazılan alt sorulardır. Genel olarak, eşek ile uğraşmak için toplam bir ağrı. –

cevap

6

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

ve sonra sadece m1 $ V10 karşı analizini yaptığı gibi o zaman sadece dosyada okumak vb V1, V2, etiketli LibreOffice'i kullanarak başlıklarını yazdırmak oldu , m1 $ V23 vs ...

birden sütun karmaşa etrafında almak için aşağıdaki küçük işlevi

# 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)) 

şüphesiz birileri bunu temizlemek mümkün olacak kullandı!

kullandığım Likert benzeri terazi çeki düzen için:

# 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]) 
} 

bu yine gelecek şüphesiz olarak yorum yapmaktan çekinmeyin!

0

Aşağıdakiler nasıl yapılır? header=FALSE ile read.csv() kullanın. Biri, iki başlık başlığıyla, diğeri de ankete cevap veren iki dizi yapın. Sonra paste() iki satır/cümleleri birlikte. Son olarak, colnames() kullanın. Sonunda ne yaptık

+0

İkinci satır boş karakterler ile başladığında bu sadece korkmuyorum. – Sean

+0

Peki ya, (if ism (second.line)) {paste (first.line, second.line)} '? – power

+1

maalesef ikinci bir satırda null karakterle başlasa bile yararlı bilgiler var! – Sean

10

November 2013 itibarıyla 'Gelişmiş Elektronik Format' in indir yanıtları görmek, SurveyMonkey dan R uyan uygun bir formda

surveymonkey export

3

dışa aktarabilirsiniz, web sayfası düzeni değişmiş gibi görünüyor. Analyze results > Export All > All Responses Data > Original View > XLS+ (Open in advanced statistical and analytical software)'u seçin. Ardından İhracat'a gidin ve dosyayı indirin. İlk satırı = soru üstbilgileri/her bir sonraki satır = 1 yanıtı olarak ham verileri alırsınız, çok sayıda yanıtınız varsa/sorularınız varsa, muhtemelen birden çok dosya arasında bölünür. başlıklarıyla

enter image description here

0

sorunu "uygun olanların tümünü seç" ile sütunlar boş üst satırı olacağı ve sütun başlığı satır altında olacaktır olmasıdır. Bu sadece bu tür sorular için bir sorundur. Bu düşünceyle

, tüm sütunlar geçmesi ve

1 bir karakter uzunluğunu Sonra sahiptir sütun adı blank- olsaydı ikinci satırdan değerle sütun adları yerine bir döngü yazdı Verilerin ikinci sırasını öldürebilir ve düzenli bir veri çerçevesine sahip olabilirsiniz.

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

df <- df[-1,] 
İlgili konular