Nothing
#' @title
#' Barplot parameters
#'
#' @description
#' This function calculates the frequencies and the relative frequencies of factors/characters of the input dataset.
#'
#' @usage ds.frequency(data, select = NULL, tojson = FALSE)
#'
#' @param data A vector, matrix or data frame which includes at least one factor/character.
#' @param select Select one or more specific nominal variables to calculate their corresponding frequencies,
#' if it's not specified the result corresponds to frequencies of every factor variable in the data.
#' @param tojson If TRUE the results are returned in json format, default returns a list
#'
#' @details
#' This function returns a list with the frequencies and relative frequencies of factors/characters
#' of the input dataset.
#'
#' @author Kleanthis Koupidis, Charalampos Bratsas
#'
#' @seealso \code{\link{ds.analysis}}, \code{\link{open_spending.ds}}
#'
#' @examples
#' # iris data frame as an input and a selected column to calculate its frequencies
#' ds.frequency(iris, select = "Species", tojson = FALSE)
#'
#' # iris data frame as an input without a selected column and json output
#' ds.frequency(iris, tojson = TRUE)
#'
#' # OpenBudgets.eu Dataset Example:
#' ds.frequency(Wuppertal_df, select = "Produkt", tojson = FALSE)
#'
#' @rdname ds.frequency
#'
#' @export
#'
ds.frequency <- function(data, select = NULL, tojson = FALSE) {
data <- as.data.frame(data)
stopifnot(all(sapply(data, is.numeric)) == FALSE)
factors <- which(sapply(data, is.factor) | sapply(data, is.character))
factors.names <- names(factors)
if (is.null(select)) {
selection <- factors.names
} else if (is.null(select) == FALSE) {
selection <- match.arg(select, factors.names, several.ok = TRUE)
}
data <- data[selection]
freq <- lapply(data, table)
relative.freq <- lapply(freq, prop.table)
if(is.list(freq)) {
freq <- lapply(freq, as.data.frame)
relative.freq <- lapply(relative.freq, as.data.frame)
} else {
freq <- as.data.frame(freq)
relative.freq <- as.data.frame(relative.freq)
}
freq.parameters <- list(
frequencies = freq,
relative.frequencies = relative.freq)
if (tojson == TRUE) {
freq.parameters <- jsonlite::toJSON(freq.parameters)
}
# Return
return(freq.parameters)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.