Purtroppo non sembra esserci alcun pacchetto R ancora in grado di generare un bel output come SPSS.La maggior parte delle funzioni per la generazione di tabelle sembrano definire i loro formati speciali che ti mettono nei guai se vuoi esportarli o lavorarci sopra in un altro modo.
Ma sono certo che R è in grado di farlo e così ho iniziato a scrivere le mie funzioni. Sono felice di condividere il risultato (work in progress-status, ma il lavoro viene svolto) con te:
La seguente funzione restituisce per tutte le variabili fattore in un data.frame la frequenza o la percentuale (calc = " perc ") per ogni livello della variabile fattore" variabile ".
La cosa più importante potrebbe essere che l'output è un semplice data & data.frame. Quindi, rispetto a molte altre funzioni, non è un problema esportare i risultati e lavorare con esso in qualsiasi modo tu voglia.
mi rendo conto che c'è molto potenziale per ulteriori miglioramenti, ossia aggiungere la possibilità di selezione riga vs. colonna calcolo percentuale, ecc
contitable <- function(survey_data, variable, calc="freq"){
# Check which variables are not given as factor
# and exlude them from the given data.frame
survey_data_factor_test <- as.logical(sapply(Survey, FUN=is.factor))
survey_data <- subset(survey_data, select=which(survey_data_factor_test))
# Inform the user about deleted variables
# is that proper use of printing to console during a function call??
# for now it worksjust fine...
flush.console()
writeLines(paste("\n ", sum(!survey_data_factor_test, na.rm=TRUE),
"non-factor variable(s) were excluded\n"))
variable_levels <- levels(survey_data[ , variable ])
variable_levels_length <- length(variable_levels)
# Initializing the data.frame which will gather the results
result <- data.frame("Variable", "Levels", t(rep(1, each=variable_levels_length)))
result_column_names <- paste(variable, variable_levels, sep=".")
names(result) <- c("Variable", "Levels", result_column_names)
for(column in 1:length(names(survey_data))){
column_levels_length <- length(levels(survey_data[ , column ]))
result_block <- as.data.frame(rep(names(survey_data)[column], each=column_levels_length))
result_block <- cbind(result_block, as.data.frame(levels(survey_data[,column])))
names(result_block) <- c("Variable", "Levels")
results <- table(survey_data[ , column ], survey_data[ , variable ])
if(calc=="perc"){
results <- apply(results, MARGIN=2, FUN=function(x){ x/sum(x) })
results <- round(results*100, 1)
}
results <- unclass(results)
results <- as.data.frame(results)
names(results) <- result_column_names
rownames(results) <- NULL
result_block <- cbind(result_block, results)
result <- rbind(result, result_block)
}
result <- result[-1,]
return(result)
}
quando dici _like il picture_, sei aperto a miglioramenti o fa deve corrispondere esattamente a quel formato? :) –
Aperto ai miglioramenti :) –