Create multivariate data by a given factor
wideByFactor modifies data.frame in such a way that variables are
“separated” into several columns by factor levels.
wideByFactor(x, factor, common, sort=TRUE, keepFactor=TRUE)
character, column name of a factor by which variables will be divided
character, column names of (common) columns that should not be divided
logical, sort resulting data frame by factor levels
logical, keep the ‘factor’ column
Given data frame is modified in such a way, that output represents a data frame with \(c + f + n * v\) columns, where \(c\) is a number of common columns for all levels of a factor, \(f\) is a factor column, \(n\) is a number of levels in factor \(f\) and \(v\) is a number of variables that should be divided for each level of a factor. Number of rows stays the same!
A data frame where divided variables have sort of “diagonalized” structure
n <- 10 f <- 2 tmp <- data.frame(y1=rnorm(n=n), y2=rnorm(n=n), f1=factor(rep(letters[1:f], n/2)), f2=factor(c(rep(c("M"), n/2), rep(c("F"), n/2))), c1=1:n, c2=2*(1:n)) wideByFactor(x=tmp, factor="f1", common=c("c1", "c2", "f2")) wideByFactor(x=tmp, factor="f1", common=c("c1", "c2"))