| DummyApply {SSBtools} | R Documentation | 
Apply a function to subsets defined by a dummy matrix
Description
For each column, i,  of the matrix x of zeros and ones, the output value is equivalent to FUN(y[x[, i] != 0]).
Usage
DummyApply(x, y, FUN = sum, simplify = TRUE)
Arguments
| x | A (sparse) dummy matrix | 
| y | Vector of input values | 
| FUN | A function | 
| simplify | Parameter to  | 
Details
With a dummy x and FUN = sum, output is equivalent to z = t(x) %*% y.
Value
Vector of output values or a matrix when multiple outputs from FUN  (see examples).
List output is also possible (ensured when simplify = FALSE).
Examples
z <- SSBtoolsData("sprt_emp_withEU")
z$age[z$age == "Y15-29"] <- "young"
z$age[z$age == "Y30-64"] <- "old"
a <- ModelMatrix(z, formula = ~age + geo, crossTable = TRUE)
cbind(as.data.frame(a$crossTable), 
      sum1 = (t(a$modelMatrix) %*% z$ths_per)[,1],
      sum2 = DummyApply(a$modelMatrix, z$ths_per, sum),
       max = DummyApply(a$modelMatrix, z$ths_per, max))
       
DummyApply(a$modelMatrix, z$ths_per, range)
DummyApply(a$modelMatrix, z$ths_per, range, simplify = FALSE)  
a$modelMatrix[, c(3, 5)] <- 0   # Introduce two empty columns. 
DummyApply(a$modelMatrix, z$ths_per, function(x){ 
  c(min = min(x), 
    max = max(x), 
    mean = mean(x), 
    median = median(x), 
    n = length(x))})   
    
DummyApply(a$modelMatrix, z$ths_per, function(x) x, simplify = FALSE)          
[Package SSBtools version 1.5.2 Index]