Skip to contents

[Stable]

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

Usage

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")
)

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

Arguments

x

(numeric)
vector of numbers we want to analyze.

values

(character)
specific values that should be counted.

na.rm

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

.N_col

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

.N_row

(integer)
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.

...

additional arguments for the lower level functions.

lyt

(layout)
input layout where analyses will be added to.

vars

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

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.

table_names

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

.stats

(character)
statistics to select for the table.

.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.

Value

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

  • 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.

Functions

  • 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().

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

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

# `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

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