Как прочитать файл SPSS в R для нескольких вопросов? - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь прочитать файл SPSS для создания кросс-таблиц, используя R expss и сторонний пакет. Я ранее пробовал это с файлами CSV, и это работало, как я хотел. Параметры передаются с использованием PHP-скрипта. Для вопросов с одним выбором (для SPSS) это работает просто отлично, но для вопросов с несколькими вариантами все не работает идеально. Может ли кто-нибудь помочь мне с синтаксисом табулирования вопросов с несколькими вариантами ответов в R?

setwd('file path goes here')


library(foreign)
library(expss)



expss_output_viewer()

all_sav <- list.files(pattern ='\\.sav$')
pass<-all_sav[with(file.info(all_sav), which.max(mtime))]

mydata = read.spss(pass, stringsAsFactors = FALSE,reencode=TRUE)


w <- data.frame(mydata)
args <- commandArgs(TRUE)


Ques<-as.character(args[1])   
Ban<-as.character(args[2])

Ques_Vec = strsplit(Ques, ',')[[1]]
Ban_Vec = strsplit(Ban, ',')[[1]]

temp1 <- w[c(Ques_Vec)]
temp2 <- w[c(Ban_Vec)]

if(length(Ques_Vec)>1 & length(Ban_Vec)>1 )
{
Banner1 = w %>% 
tab_cells(mrset(as.category(temp1))) %>%
tab_cols(total(),mrset(as.category(temp2))) %>% 
tab_stat_cases(total_row_position = "none",label = "")
#tab_pivot(Banner1)


Banner2 = w %>%
  tab_cells(mrset(as.category(temp1))) %>%
  tab_cols(total(),mrset(as.category(temp2))) %>% 
  tab_stat_cpct(total_row_position = "below",label = "")%>%
tab_last_sig_cpct(sig_labels = paste0("<span style='color:red'>",LETTERS, "</b>"))
#tab_pivot(Banner2)

}


Это код, который я создал для моей кросс-таблицы со значением. Желаемый результат должен быть примерно таким:


                  Total   Apple    Mango   Banana
                           A        B        C

Total Cases         120    40       50       30      

Apple                40     30       20      30
                     45%    34%      23%      10%AB

Mango                12      12       12       12
                     10%     10%      10%       7%

Banana                18     19       20        21
                     0.7%A    12%AC    23%      0.7%

Это пример вывода для следующего

...