knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
The fapply2()
function applies two formats to two different vectors, and combines
them when complete. This function can be used to collapse two columns into one.
The fapply2()
function is convenient to use when preparing your data for
reporting. Here is an example:
# Create sample vectors v1 <- c(27, 43, 22, 56) v2 <- c(18.24324, 29.05405, 14.86486, 37.83784) # Create data frame dat <- data.frame("Counts" = v1, "Percents" = v2) # Format and Combine dat$CntPct <- fapply2(dat$Counts, dat$Percents, "%d", "(%.1f%%)") # View results dat # Counts Percents CntPct # 1 27 18.24324 27 (18.2%) # 2 43 29.05405 43 (29.1%) # 3 22 14.86486 22 (14.9%) # 4 56 37.83784 56 (37.8%)
The fapply2()
function is suitable for use with the dplyr package.
Here is the same example as above, but using dplyr mutate()
instead of Base R:
library(dplyr) # Create sample vectors v1 <- c(27, 43, 22, 56) v2 <- c(18.24324, 29.05405, 14.86486, 37.83784) # Create data frame dat <- data.frame("Counts" = v1, "Percents" = v2) # Format and Combine dat <- dat |> mutate(CntPct = fapply2(dat$Counts, dat$Percents, "%d", "(%.1f%%)")) # View results dat # Counts Percents CntPct # 1 27 18.24324 27 (18.2%) # 2 43 29.05405 43 (29.1%) # 3 22 14.86486 22 (14.9%) # 4 56 37.83784 56 (37.8%)
The fapply2()
function is also compatible with the datastep()
function
from the libr package.
Here is the example again with the datastep()
:
library(libr) # Create sample vectors v1 <- c(27, 43, 22, 56) v2 <- c(18.24324, 29.05405, 14.86486, 37.83784) # Create data frame dat <- data.frame("Counts" = v1, "Percents" = v2) # Format and Combine dat <- datastep(dat, { CntPct <- fapply2(Counts, Percents, "%d", "(%.1f%%)") }) # View results dat # Counts Percents CntPct # 1 27 18.24324 27 (18.2%) # 2 43 29.05405 43 (29.1%) # 3 22 14.86486 22 (14.9%) # 4 56 37.83784 56 (37.8%)
Note that fapply2()
will use formats assigned to the data frame columns
if they are available. Assigning the formats to the columns first can
simplify use of the function and promote format reuse.
To assign the formats to the columns, use the
formats()
function, like so:
# Create sample vectors v1 <- c(27, 43, 22, 56) v2 <- c(18.24324, 29.05405, 14.86486, 37.83784) # Create data frame dat <- data.frame("Counts" = v1, "Percents" = v2) formats(dat) <- list(Counts = "%d", Percents = "(%.1f%%)") # Format and Combine - Formats already assigned dat$CntPct <- fapply2(dat$Counts, dat$Percents) # View results dat # Counts Percents CntPct # 1 27 18.24324 27 (18.2%) # 2 43 29.05405 43 (29.1%) # 3 22 14.86486 22 (14.9%) # 4 56 37.83784 56 (37.8%)
datastep()
The ability to use any formats assigned to the columns makes the fapply()
function very useful when combined with format catalogs and the datastep()
function. When the format catalog is assigned to the datastep()
, it will
automatically assign the formats in the catalog to any corresponding columns
on the input data frame. This feature allows you to quickly assign saved formats
to a new dataset, and use those formats to combine columns in the desired way.
Observe:
library(libr) # Create sample vectors grp <- c("Group1", "Group2", "Group3", "Group4") v1 <- c(27, 43, 22, 56) v2 <- c(18.24324, 29.05405, 14.86486, 37.83784) v3 <- c(5.24883, 8.83724, 2.39483, 9.12542) v4 <- c(2.97632, 3.32845, 0.29784, 4.22156) # Create data frame dat <- data.frame("Group" = grp, "Counts" = v1, "Percents" = v2, "Mean" = v3, "SD" = v4) # View original data dat # Group Counts Percents Mean SD # 1 Group1 27 18.24324 5.24883 2.97632 # 2 Group2 43 29.05405 8.83724 3.32845 # 3 Group3 22 14.86486 2.39483 0.29784 # 4 Group4 56 37.83784 9.12542 4.22156 # Create format catalog fc <- fcat(Counts = "%d", Percents = "(%03.1f%%)", Mean = "%.1f", SD = "(%04.2f)") # Format and Combine columns using Format catalog dat2 <- datastep(dat, format = fc, keep = v(Group, CntPct, MeanSD), { CntPct <- fapply2(Counts, Percents) MeanSD <- fapply2(Mean, SD) }) # View results dat2 # Group CntPct MeanSD # 1 Group1 27 (18.2%) 5.2 (2.98) # 2 Group2 43 (29.1%) 8.8 (3.33) # 3 Group3 22 (14.9%) 2.4 (0.30) # 4 Group4 56 (37.8%) 9.1 (4.22)
The above technique points to a method for sharing formats between programs and ensuring that statistical results are formatted consistently across programs.
Note that the fapply2()
function will
accept any type of format supported by the fmtr package. That means you can use
numeric formats, date formats, vector lookups, user-defined formats,
and vectorized functions. The combination of these format types allows you
to format and combine data in a powerful way that will enhance the impact
of your analysis.
Next: Convenience Functions
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.