Leider scheint es noch kein R-Paket zu sein, dass kann eine schöne Ausgabe wie erzeugen SPSS.Die meisten Funktionen zum Generieren von Tabellen scheinen ihre eigenen speziellen Formate zu definieren, was Sie in Schwierigkeiten bringt, wenn Sie auf eine andere Weise exportieren oder daran arbeiten wollen.
Aber ich bin mir sicher, R ist dazu in der Lage und so begann ich meine eigenen Funktionen zu schreiben. Ich bin glücklich, das Ergebnis mit Ihnen zu teilen (Arbeit in Arbeit-Status, aber erledigt den Job):
Die folgende Funktion gibt für alle Faktorvariablen in einem dat.frame die Häufigkeit oder den Prozentsatz zurück (calc = " perc ") für jede Ebene der Faktorvariablen" Variable ".
Die wichtigste Sache kann sein, dass die Ausgabe eine einfache & benutzerfreundliche data.frame ist. Im Vergleich zu vielen anderen Funktionen ist es kein Problem, die Ergebnisse einer Arbeit damit zu exportieren, wie Sie wollen.
Ich weiß, dass es viel Potenzial für weitere Verbesserungen, dh eine Möglichkeit hinzufügen Reihe vs. Spalte Prozentrechnung für die Auswahl usw.
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)
}
wenn Sie _like der picture_ sagen, Sie sind zu Verbesserungen offen oder tut muss es genau diesem Format entsprechen? :) –
Offen für Verbesserungen :) –