В итоге я распечатал заголовки, используя 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))
Без сомнения, кто-нибудь сможет это почистить!
Чтобы привести в порядок шкалы типа Лайкерта, я использовал:
# 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])
}
Не стесняйтесь комментировать, без сомнения, это произойдет снова!