Create a vector of class deb_decimal
to integrate non-decimal currencies
and other measurements that use tripartite or tetrapartite units into
standardized forms of analysis provided by R.
Arguments
- x
A numeric vector representing the decimalized values of either tripartite or tetrapartite values.
- unit
A character vector of length one indicating the unit for the decimalized values, either
"l"
(libra, the default),"s"
(solidus),"d"
(denarius), or"f"
(farthing)."f"
is only valid if thebases
argument is a numeric vector of length 3 (a tetrapartite value).- bases
Numeric vector of length 2 or 3 used to specify the bases for the solidus or s, denarius or d, and optionally the farthing or f units. Default is
c(20, 12)
, which conforms to the most widely used tripartite system of 1 pound = 20 shillings and 1 shilling = 12 pence.
Details
The deb_decimal
class and the debkeepr
package use the nomenclature of
l, s, and d to represent the tripartite
system of pounds, shillings, and pence units. The abbreviations derive from
the Latin terms libra,
solidus, and
denarius. In the 8th century a
solidus came to represent 12 denarii coins, and, for a time at least,
240 denarii were made from one libra or pound of silver. The custom of
counting coins in dozens (solidi) and scores of dozens (librae) spread
throughout the Carolingian Empire and became ingrained in much of Europe.
However, a variety of accounting systems arose at different times that used
other bases for the
solidus and denarius units and even additional units. The deb_decimal
class decimalizes either tripartite or tetrapartite values. The bases
attribute makes it possible to specify the bases for the solidus,
denarius, and optionally farthing units. The unit
attribute identifies
the decimalized unit: either libra, solidus, denarius, or farthing.
deb_decimal
vectors can either be tripartite, like deb_lsd
, or
tetrapartite, like deb_tetra
. These two kinds of deb_decimal
vectors
are distinguished by the length of bases
attribute (2 for tripartite and
3 for tetrapartite) and the addition of the farthing unit for tetrapartite.
If the solidus and denarius bases are equal, tripartite and tetrapartite
deb_decimal
vectors can be combined. The result is a deb_decimal
vector
with tripartite bases.
See also
The deb_decimal
class works in concert with the deb_lsd
and deb_tetra
classes. These classes maintain the tripartite (deb_lsd
) and tetrapartite
(deb_tetra
) unit structure of non-decimal currencies and values.
See deb_lsd()
and deb_tetra()
.
Examples
# deb_decimal with tripartite units
deb_decimal(c(5.25, 3.825, 8.5))
#> <deb_decimal[3]>
#> [1] 5.250 3.825 8.500
#> # Unit: libra
#> # Bases: 20s 12d
# Set the unit of the deb_decimal vector
deb_decimal(c(105, 76.5, 170), unit = "s")
#> <deb_decimal[3]>
#> [1] 105.0 76.5 170.0
#> # Unit: solidus
#> # Bases: 20s 12d
deb_decimal(c(1260, 918, 240), unit = "d")
#> <deb_decimal[3]>
#> [1] 1260 918 240
#> # Unit: denarius
#> # Bases: 20s 12d
# Set the bases of the deb_decimal vector
deb_decimal(c(5.25, 3.825, 8.5), bases = c(60, 16))
#> <deb_decimal[3]>
#> [1] 5.250 3.825 8.500
#> # Unit: libra
#> # Bases: 60s 16d
# Create a prototype or vector of length 0
deb_decimal()
#> <deb_decimal[0]>
#> # Unit: libra
#> # Bases: 20s 12d
# To create a tetrapartite value, provide numeric vector
# of length 3 to bases argument
deb_decimal(c(5.11875, 3.234375, 8.2875),
bases = c(20, 12, 4))
#> <deb_decimal[3]>
#> [1] 5.118750 3.234375 8.287500
#> # Unit: libra
#> # Bases: 20s 12d 4f
deb_decimal(c(4914, 3105, 7956),
unit = "f",
bases = c(20, 12, 4))
#> <deb_decimal[3]>
#> [1] 4914 3105 7956
#> # Unit: farthing
#> # Bases: 20s 12d 4f