Nothing
## =============================================================================
##' @title Preprocessing for Free Sorting Data
##'
##' @description
##' For Free Sorting Data, this preprocessing is needed.
##'
##' @usage
##' preprocess_FreeSort(Data, NameSub=NULL)
##'
##'
##' @param Data data frame or matrix. Corresponds to all variables that contain subjects results. Each column corresponds to a subject and gives the groups to which the products (rows) are assigned
##'
##' @param NameSub string vector. Name of each subject. Length must be equal to the number of clumn of the Data. If NULL, the names are S1,...Sm. Default: NULL
##'
##'
##' @return A list with:
##' \itemize{
##' \item new_Data: the Data transformed
##' \item Blocks: the number of groups for each subject
##' \item NameBlocks: the name of each subject
##' }
##'
##'
##' @keywords FreeSorting
##'
##' @references
##' Llobell, F., Cariou, V., Vigneau, E., Labenne, A., & Qannari, E. M. (2018). Analysis and clustering of multiblock datasets by means of the STATIS and CLUSTATIS methods. Application to sensometrics. Food Quality and Preference, in Press.
##'
##'
##' @importFrom FactoMineR tab.disjonctif
##'
##'
##' @examples
##' data(choc)
##' prepro=preprocess_FreeSort(choc)
##'
##' @seealso \code{\link{clustatis}}, \code{\link{clustatis_FreeSort}}
##'
##' @export
## =============================================================================
preprocess_FreeSort <- function(Data, NameSub = NULL) {
p <- ncol(Data)
n <- nrow(Data)
if (is.null(colnames(Data))) colnames(Data) <- paste0("S", 1:ncol(Data))
if (is.null(NameSub)) NameSub <- paste("S", 1:p)
# parapet for Namesub
if (length(NameSub) != p) {
stop("Namesub must have the length of ncol(Data)")
}
Yi <- list()
for (i in 1:p)
{
Data[, i] <- factor(Data[, i])
Yi[[i]] <- as.matrix(tab.disjonctif(Data[, i]))
a <- apply(Yi[[i]], 2, mean)
Yi[[i]] <- Yi[[i]] %*% diag(1 / sqrt(a)) # standardization
colnames(Yi[[i]]) <- paste0(NameSub[i], "g", 1:ncol(Yi[[i]]))
}
dat <- NULL
for (i in 1:p)
{
dat <- cbind(dat, Yi[[i]])
}
rownames(dat) <- rownames(Data)
Blocks <- rep(0, p)
for (i in 1:p)
{
Blocks[i] <- nlevels(as.factor(Data[, i]))
}
return(list(new_Data = dat, Blocks = Blocks, NameBlocks = NameSub))
}
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.