Skip to content

Commit

Permalink
ARROW-13886 [R] Expand documentation for decimal()
Browse files Browse the repository at this point in the history
First attempt at this. Will be followed by:
* opening Jira tickets to:
    * deprecate `decimal()`
    * implement `decimal128()` and `decimal256()`
* expand unit tests both for data types and `Arrays`

Tickets generated:
* implement `decimal128()` - https://issues.apache.org/jira/browse/ARROW-14843
* implement `decimal256()` - https://issues.apache.org/jira/browse/ARROW-14844
* improve messaging around `Decimal128Type` & `Decimal256Type` in the C++ code - https://issues.apache.org/jira/browse/ARROW-14842

Closes #11758 from dragosmg/ARROW-13886_decimal_docs

Authored-by: Dragos Moldovan-Grünfeld <dragos.mold@gmail.com>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
  • Loading branch information
dragosmg authored and thisisnic committed Nov 27, 2021
1 parent 35b3567 commit d722f50
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 4 deletions.
23 changes: 21 additions & 2 deletions r/R/type.R
Original file line number Diff line number Diff line change
Expand Up @@ -181,14 +181,33 @@ NestedType <- R6Class("NestedType", inherit = DataType)
#' `bit64::integer64` object) by setting `options(arrow.int64_downcast =
#' FALSE)`.
#'
#' `decimal()` creates a `decimal128` type. Arrow decimals are fixed-point
#' decimal numbers encoded as a scalar integer. The `precision` is the number of
#' significant digits that the decimal type can represent; the `scale` is the
#' number of digits after the decimal point. For example, the number 1234.567
#' has a precision of 7 and a scale of 3. Note that `scale` can be negative.
#'
#' As an example, `decimal(7, 3)` can exactly represent the numbers 1234.567 and
#' -1234.567 (encoded internally as the 128-bit integers 1234567 and -1234567,
#' respectively), but neither 12345.67 nor 123.4567.
#'
#' `decimal(5, -3)` can exactly represent the number 12345000 (encoded
#' internally as the 128-bit integer 12345), but neither 123450000 nor 1234500.
#' The `scale` can be thought of as an argument that controls rounding. When
#' negative, `scale` causes the number to be expressed using scientific notation
#' and power of 10.
#'
#' @param unit For time/timestamp types, the time unit. `time32()` can take
#' either "s" or "ms", while `time64()` can be "us" or "ns". `timestamp()` can
#' take any of those four values.
#' @param timezone For `timestamp()`, an optional time zone string.
#' @param byte_width byte width for `FixedSizeBinary` type.
#' @param list_size list size for `FixedSizeList` type.
#' @param precision For `decimal()`, precision
#' @param scale For `decimal()`, scale
#' @param precision For `decimal()`, the number of significant digits
#' the arrow `decimal` type can represent. The maximum precision for
#' `decimal()` is 38 significant digits.
#' @param scale For `decimal()`, the number of digits after the decimal
#' point. It can be negative.
#' @param type For `list_of()`, a data type to make a list-of-type
#' @param ... For `struct()`, a named list of types to define the struct columns
#'
Expand Down
23 changes: 21 additions & 2 deletions r/man/data-type.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit d722f50

Please sign in to comment.