v <- iris$Sepal.Length # A numeric vector
g <- GRP(iris$Species) # A grouping
## default vector method
BY(v, g, sum) # Sum by species
head(BY(v, g, scale)) # Scale by species (please use fscale instead)
BY(v, g, quantile) # Species quantiles: by default stacked
BY(v, g, quantile, expand.wide = TRUE) # Wide format
## matrix method
m <- qM(num_vars(iris))
BY(m, g, sum) # Also return as matrix
BY(m, g, sum, return = "data.frame") # Return as data.frame.. also works for computations below
head(BY(m, g, scale))
BY(m, g, quantile)
BY(m, g, quantile, expand.wide = TRUE)
ml <- BY(m, g, quantile, expand.wide = TRUE, # Return as list of matrices
return = "list")
ml
# Unlisting to Data Frame
unlist2d(ml, idcols = "Variable", row.names = "Species")
## data.frame method
BY(num_vars(iris), g, sum) # Also returns a data.fram
BY(num_vars(iris), g, sum, return = 2) # Return as matrix.. also works for computations below
head(BY(num_vars(iris), g, scale))
BY(num_vars(iris), g, quantile)
BY(num_vars(iris), g, quantile, expand.wide = TRUE)
BY(num_vars(iris), g, quantile, # Return as list of matrices
expand.wide = TRUE, return = "list")
## grouped data frame method
library(magrittr) # Note: Used because |> is not available on older R versions
giris <- fgroup_by(iris, Species)
giris %>% BY(sum) # Compute sum
giris %>% BY(sum, use.g.names = TRUE, # Use row.names and
keep.group_vars = FALSE) # remove 'Species' and groups attribute
giris %>% BY(sum, return = "matrix") # Return matrix
giris %>% BY(sum, return = "matrix", # Matrix with row.names
use.g.names = TRUE)
giris %>% BY(quantile) # Compute quantiles (output is stacked)
giris %>% BY(quantile, # Much better, also keeps 'Species'
expand.wide = TRUE)
Run the code above in your browser using DataLab