Использование R для анализа файлов CSV Surveymonkey
Я пытаюсь проанализировать крупный опрос, созданный с помощью safeymonkey, который содержит сотни столбцов в файле CSV, и формат вывода трудно использовать, поскольку заголовки работают по двум строкам.
- Кто-нибудь нашел простой способ управления заголовками в CSV файле, чтобы анализ был управляемым?
- Как другие люди анализируют результаты Surveymonkey?
Спасибо!
Ответы
Ответ 1
В конце концов, я сделал распечатку заголовков с использованием libreoffice, обозначенных как V1, V2 и т.д. Затем я просто прочитал в файле как
m1 <- read.csv('Sheet1.csv', header=FALSE, skip=1)
а затем просто сделал анализ против m1 $V10, m1 $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])
}
Не стесняйтесь комментировать, потому что, без сомнения, это снова придет!
Ответ 2
Вы можете экспортировать его в удобной форме, которая соответствует R из 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]()
Ответ 4
Как насчет следующего: используйте read.csv()
с header=FALSE
. Сделайте два массива, один с двумя строками заголовков и один с ответами на опрос. Тогда paste()
две строки/предложения вместе. Наконец, используйте colnames()
.
Ответ 5
Проблема с заголовками заключается в том, что столбцы с "select all the apply" будут иметь пустую верхнюю строку, а заголовок столбца будет следующей строкой. Это только проблема для этих типов вопросов.
С учетом этого я написал цикл, чтобы пройти через все столбцы и заменить имена столбцов на значение из второй строки, если имя столбца было пустым, которое имеет длину символа 1.
Затем вы можете убить вторую строку данных и иметь аккуратный фрейм данных.
for(i in 1:ncol(df)){
newname <- colnames(df)[i]
if(nchar(newname) < 2){
colnames(df)[i] <- df[1,i]
}
df <- df[-1,]