With numeric values in a gt table, we can perform formatting so that the targeted values are rendered in scientific notation. Furthermore, there is fine control with the following options:

  • decimals: choice of the number of decimal places, option to drop trailing zeros, and a choice of the decimal symbol

  • scaling: we can choose to scale targeted values by a multiplier value

  • pattern: option to use a text pattern for decoration of the formatted values

  • locale-based formatting: providing a locale ID will result in formatting specific to the chosen locale

fmt_scientific(
  data,
  columns,
  rows = everything(),
  decimals = 2,
  drop_trailing_zeros = FALSE,
  scale_by = 1,
  pattern = "{x}",
  sep_mark = ",",
  dec_mark = ".",
  force_sign = FALSE,
  locale = NULL
)

Arguments

data

A table object that is created using the gt() function.

columns

The columns to format. Can either be a series of column names provided in c(), a vector of column indices, or a helper function focused on selections. The select helper functions are: starts_with(), ends_with(), contains(), matches(), one_of(), num_range(), and everything().

rows

Optional rows to format. Providing either everything() (the default) or TRUE results in all rows in columns being formatted. Can either be a vector of row captions provided in c(), a vector of row indices, or a helper function focused on selections. The select helper functions are: starts_with(), ends_with(), contains(), matches(), one_of(), num_range(), and everything(). We can also use expressions to filter down to the rows we need (e.g., [colname_1] > 100 & [colname_2] < 50).

decimals

An option to specify the exact number of decimal places to use. The default number of decimal places is 2.

drop_trailing_zeros

A logical value that allows for removal of trailing zeros (those redundant zeros after the decimal mark).

scale_by

A value to scale the input. The default is 1.0. All numeric values will be multiplied by this value first before undergoing formatting.

pattern

A formatting pattern that allows for decoration of the formatted value. The value itself is represented by {x} and all other characters are taken to be string literals.

sep_mark

The mark to use as a separator between groups of digits (e.g., using sep_mark = "," with 1000 would result in a formatted value of 1,000).

dec_mark

The character to use as a decimal mark (e.g., using dec_mark = "," with 0.152 would result in a formatted value of 0,152).

force_sign

Should the positive sign be shown for positive values (effectively showing a sign for all values except zero)? If so, use TRUE for this option. The default is FALSE, where only negative numbers will display a minus sign.

locale

An optional locale ID that can be used for formatting the value according the locale's rules. Examples include "en_US" for English (United States) and "fr_FR" for French (France). The use of a valid locale ID will override any values provided in sep_mark and dec_mark. We can use the info_locales() function as a useful reference for all of the locales that are supported.

Value

An object of class gt_tbl.

Details

Targeting of values is done through columns and additionally by rows (if nothing is provided for rows then entire columns are selected). Conditional formatting is possible by providing a conditional expression to the rows argument. See the Arguments section for more information on this.

Figures

Function ID

3-3

See also

Examples

# Use `exibble` to create a gt table;
# format the `num` column as partially
# numeric and partially in scientific
# notation
tab_1 <-
  exibble %>%
  gt() %>%
  fmt_number(
    columns = num,
    rows = num > 500,
    decimals = 1,
    scale_by = 1/1000,
    pattern = "{x}K"
  ) %>%
  fmt_scientific(
    columns = num,
    rows = num <= 500,
    decimals = 1
  )