Skip to contents

[Stable]

We can count the occurrence of specific values in a variable of interest.

Usage

count_values(
  lyt,
  vars,
  values,
  na_str = default_na_str(),
  nested = TRUE,
  ...,
  table_names = vars,
  .stats = "count_fraction",
  .formats = NULL,
  .labels = c(count_fraction = paste(values, collapse = ", ")),
  .indent_mods = NULL
)

s_count_values(
  x,
  values,
  na.rm = TRUE,
  .N_col,
  .N_row,
  denom = c("n", "N_row", "N_col")
)

# S3 method for character
s_count_values(x, values = "Y", na.rm = TRUE, ...)

# S3 method for factor
s_count_values(x, values = "Y", ...)

# S3 method for logical
s_count_values(x, values = TRUE, ...)

a_count_values(
  x,
  values,
  na.rm = TRUE,
  .N_col,
  .N_row,
  denom = c("n", "N_row", "N_col")
)

Arguments

lyt

(PreDataTableLayouts)
layout that analyses will be added to.

vars

(character)
variable names for the primary analysis variable to be iterated over.

values

(character)
specific values that should be counted.

na_str

(string)
string used to replace all NA or empty values in the output.

nested

(flag)
whether this layout instruction should be applied within the existing layout structure _if possible (TRUE, the default) or as a new top-level element (FALSE). Ignored if it would nest a split. underneath analyses, which is not allowed.

...

additional arguments for the lower level functions.

table_names

(character)
this can be customized in the case that the same vars are analyzed multiple times, to avoid warnings from rtables.

.stats

(character)
statistics to select for the table. Run get_stats("count_values") to see available statistics for this function.

.formats

(named character or list)
formats for the statistics. See Details in analyze_vars for more information on the "auto" setting.

.labels

(named character)
labels for the statistics (without indent).

.indent_mods

(named integer)
indent modifiers for the labels. Defaults to 0, which corresponds to the unmodified default behavior. Can be negative.

x

(numeric)
vector of numbers we want to analyze.

na.rm

(flag)
whether NA values should be removed from x prior to analysis.

.N_col

(integer(1))
column-wise N (column count) for the full column being analyzed that is typically passed by rtables.

.N_row

(integer(1))
row-wise N (row group count) for the group of observations being analyzed (i.e. with no column-based subsetting) that is typically passed by rtables.

denom

(string)
choice of denominator for proportion. Options are:

  • n: number of values in this row and column intersection.

  • N_row: total number of values in this row across columns.

  • N_col: total number of values in this column across rows.

Value

  • count_values() returns a layout object suitable for passing to further layouting functions, or to rtables::build_table(). Adding this function to an rtable layout will add formatted rows containing the statistics from s_count_values() to the table layout.

  • s_count_values() returns output of s_summary() for specified values of a non-numeric variable.

Functions

  • count_values(): Layout-creating function which can take statistics function arguments and additional format arguments. This function is a wrapper for rtables::analyze().

  • s_count_values(): S3 generic function to count values.

  • s_count_values(character): Method for character class.

  • s_count_values(factor): Method for factor class. This makes an automatic conversion to character and then forwards to the method for characters.

  • s_count_values(logical): Method for logical class.

  • a_count_values(): Formatted analysis function which is used as afun in count_values().

Note

  • For factor variables, s_count_values checks whether values are all included in the levels of x and fails otherwise.

  • For count_values(), variable labels are shown when there is more than one element in vars, otherwise they are hidden.

Examples

# `count_values`
basic_table() %>%
  count_values("Species", values = "setosa") %>%
  build_table(iris)
#>            all obs  
#> ————————————————————
#> setosa   50 (33.33%)

# `s_count_values.character`
s_count_values(x = c("a", "b", "a"), values = "a")
#> $n
#> [1] 3
#> 
#> $count
#> [1] 2
#> 
#> $count_fraction
#> [1] 2.0000000 0.6666667
#> 
#> $n_blq
#> [1] 0
#> 
s_count_values(x = c("a", "b", "a", NA, NA), values = "b", na.rm = FALSE)
#> $n
#> [1] 5
#> 
#> $count
#> [1] 1
#> 
#> $count_fraction
#> [1] 1.0 0.2
#> 
#> $n_blq
#> [1] 0
#> 

# `s_count_values.factor`
s_count_values(x = factor(c("a", "b", "a")), values = "a")
#> $n
#> [1] 3
#> 
#> $count
#> [1] 2
#> 
#> $count_fraction
#> [1] 2.0000000 0.6666667
#> 
#> $n_blq
#> [1] 0
#> 

# `s_count_values.logical`
s_count_values(x = c(TRUE, FALSE, TRUE))
#> $n
#> [1] 3
#> 
#> $count
#> [1] 2
#> 
#> $count_fraction
#> [1] 2.0000000 0.6666667
#> 
#> $n_blq
#> [1] 0
#> 

# `a_count_values`
a_count_values(x = factor(c("a", "b", "a")), values = "a", .N_col = 10, .N_row = 10)
#> RowsVerticalSection (in_rows) object print method:
#> ----------------------------
#>         row_name formatted_cell indent_mod      row_label
#> 1              n              3          0              n
#> 2          count              2          0          count
#> 3 count_fraction     2 (66.67%)          0 count_fraction
#> 4          n_blq              0          0          n_blq