Groups numeric age values into categorized age bands using one of three
methods: fixed interval ("interval"
), equal distance ("distance"
),
or quantile-based grouping ("quantile"
). Supports flexible labeling and
language-specific suffixes.
Numeric vector of ages.
Character. Grouping method: "interval"
(custom breaks),
"distance"
(uniform width), or "quantile"
(equal-sized groups).
Integer. Width of age bands (used only
if method = "distance"
). Default is 5.
Numeric. Upper limit of the age range (used in "distance"
method).
Logical. Whether to separate age 0 into its own group
(only used if method = "distance"
). Default is TRUE.
Numeric vector of breakpoints (required if
method = "interval"
).
Character vector of labels for resulting age groups.
If NULL
, default interval-style labels are generated.
Output language for default labels, "cn"
(Chinese)
or "en"
(English). Default is "cn"
.
Character string appended to labels, e.g., "yrs"
.
Default depends on lang
.
Logical. Whether intervals are right-closed. Passed to cut()
.
Default is FALSE.
A factor variable of age groups with labeled levels.
ages <- sample(0:101, 200, replace = TRUE)
cutage(ages, method = "distance", length = 5, maxage = 60, sep_zero = TRUE)
#> [1] 5-9 岁 55-59 岁 25-29 岁 40-44 岁 60+ 岁 5-9 岁 60+ 岁 30-34 岁
#> [9] 60+ 岁 15-19 岁 60+ 岁 35-39 岁 55-59 岁 15-19 岁 30-34 岁 60+ 岁
#> [17] 30-34 岁 60+ 岁 1-4 岁 60+ 岁 60+ 岁 1-4 岁 20-24 岁 5-9 岁
#> [25] 50-54 岁 60+ 岁 60+ 岁 40-44 岁 15-19 岁 40-44 岁 30-34 岁 5-9 岁
#> [33] 60+ 岁 60+ 岁 45-49 岁 15-19 岁 40-44 岁 60+ 岁 60+ 岁 50-54 岁
#> [41] 50-54 岁 60+ 岁 60+ 岁 60+ 岁 60+ 岁 60+ 岁 15-19 岁 60+ 岁
#> [49] 1-4 岁 45-49 岁 1-4 岁 10-14 岁 20-24 岁 45-49 岁 60+ 岁 60+ 岁
#> [57] 1-4 岁 35-39 岁 60+ 岁 60+ 岁 10-14 岁 40-44 岁 60+ 岁 60+ 岁
#> [65] 35-39 岁 60+ 岁 60+ 岁 60+ 岁 35-39 岁 60+ 岁 60+ 岁 30-34 岁
#> [73] 60+ 岁 60+ 岁 60+ 岁 45-49 岁 60+ 岁 20-24 岁 60+ 岁 5-9 岁
#> [81] 60+ 岁 35-39 岁 60+ 岁 30-34 岁 60+ 岁 60+ 岁 35-39 岁 60+ 岁
#> [89] 20-24 岁 40-44 岁 40-44 岁 60+ 岁 60+ 岁 40-44 岁 35-39 岁 35-39 岁
#> [97] 30-34 岁 60+ 岁 10-14 岁 60+ 岁 20-24 岁 60+ 岁 60+ 岁 60+ 岁
#> [105] 30-34 岁 25-29 岁 60+ 岁 45-49 岁 45-49 岁 60+ 岁 60+ 岁 60+ 岁
#> [113] 60+ 岁 60+ 岁 40-44 岁 35-39 岁 40-44 岁 60+ 岁 25-29 岁 10-14 岁
#> [121] 15-19 岁 60+ 岁 15-19 岁 60+ 岁 60+ 岁 60+ 岁 40-44 岁 5-9 岁
#> [129] 35-39 岁 60+ 岁 60+ 岁 60+ 岁 60+ 岁 10-14 岁 1-4 岁 15-19 岁
#> [137] 60+ 岁 10-14 岁 30-34 岁 25-29 岁 20-24 岁 60+ 岁 60+ 岁 15-19 岁
#> [145] 60+ 岁 35-39 岁 45-49 岁 30-34 岁 60+ 岁 25-29 岁 45-49 岁 10-14 岁
#> [153] 50-54 岁 25-29 岁 60+ 岁 45-49 岁 60+ 岁 45-49 岁 50-54 岁 5-9 岁
#> [161] 60+ 岁 10-14 岁 15-19 岁 55-59 岁 1-4 岁 60+ 岁 30-34 岁 45-49 岁
#> [169] 60+ 岁 60+ 岁 40-44 岁 5-9 岁 40-44 岁 20-24 岁 60+ 岁 15-19 岁
#> [177] 60+ 岁 60+ 岁 55-59 岁 5-9 岁 50-54 岁 10-14 岁 5-9 岁 1-4 岁
#> [185] 25-29 岁 45-49 岁 60+ 岁 60+ 岁 25-29 岁 60+ 岁 10-14 岁 5-9 岁
#> [193] 60+ 岁 60+ 岁 60+ 岁 60+ 岁 55-59 岁 60+ 岁 25-29 岁 60+ 岁
#> 14 Levels: 0 岁 1-4 岁 5-9 岁 10-14 岁 15-19 岁 20-24 岁 25-29 岁 ... 60+ 岁
# Custom breaks
cutage(ages, method = "interval", breaks = c(0, 15, 30, 45, 60, 75, Inf))
#> [1] 0-14 岁 45-59 岁 15-29 岁 30-44 岁 75+ 岁 0-14 岁 75+ 岁 30-44 岁
#> [9] 75+ 岁 15-29 岁 60-74 岁 30-44 岁 45-59 岁 15-29 岁 30-44 岁 75+ 岁
#> [17] 30-44 岁 60-74 岁 0-14 岁 60-74 岁 75+ 岁 0-14 岁 15-29 岁 0-14 岁
#> [25] 45-59 岁 75+ 岁 75+ 岁 30-44 岁 15-29 岁 30-44 岁 30-44 岁 0-14 岁
#> [33] 60-74 岁 60-74 岁 45-59 岁 15-29 岁 30-44 岁 75+ 岁 60-74 岁 45-59 岁
#> [41] 45-59 岁 60-74 岁 60-74 岁 75+ 岁 75+ 岁 75+ 岁 15-29 岁 75+ 岁
#> [49] 0-14 岁 45-59 岁 0-14 岁 0-14 岁 15-29 岁 45-59 岁 60-74 岁 75+ 岁
#> [57] 0-14 岁 30-44 岁 60-74 岁 75+ 岁 0-14 岁 30-44 岁 60-74 岁 60-74 岁
#> [65] 30-44 岁 60-74 岁 75+ 岁 75+ 岁 30-44 岁 75+ 岁 75+ 岁 30-44 岁
#> [73] 75+ 岁 60-74 岁 75+ 岁 45-59 岁 60-74 岁 15-29 岁 60-74 岁 0-14 岁
#> [81] 60-74 岁 30-44 岁 75+ 岁 30-44 岁 75+ 岁 60-74 岁 30-44 岁 75+ 岁
#> [89] 15-29 岁 30-44 岁 30-44 岁 75+ 岁 75+ 岁 30-44 岁 30-44 岁 30-44 岁
#> [97] 30-44 岁 75+ 岁 0-14 岁 75+ 岁 15-29 岁 75+ 岁 75+ 岁 75+ 岁
#> [105] 30-44 岁 15-29 岁 75+ 岁 45-59 岁 45-59 岁 60-74 岁 75+ 岁 75+ 岁
#> [113] 75+ 岁 75+ 岁 30-44 岁 30-44 岁 30-44 岁 75+ 岁 15-29 岁 0-14 岁
#> [121] 15-29 岁 75+ 岁 15-29 岁 75+ 岁 75+ 岁 75+ 岁 30-44 岁 0-14 岁
#> [129] 30-44 岁 60-74 岁 75+ 岁 60-74 岁 75+ 岁 0-14 岁 0-14 岁 15-29 岁
#> [137] 75+ 岁 0-14 岁 30-44 岁 15-29 岁 15-29 岁 75+ 岁 60-74 岁 15-29 岁
#> [145] 60-74 岁 30-44 岁 45-59 岁 30-44 岁 75+ 岁 15-29 岁 45-59 岁 0-14 岁
#> [153] 45-59 岁 15-29 岁 60-74 岁 45-59 岁 75+ 岁 45-59 岁 45-59 岁 0-14 岁
#> [161] 75+ 岁 0-14 岁 15-29 岁 45-59 岁 0-14 岁 75+ 岁 30-44 岁 45-59 岁
#> [169] 60-74 岁 75+ 岁 30-44 岁 0-14 岁 30-44 岁 15-29 岁 75+ 岁 15-29 岁
#> [177] 75+ 岁 75+ 岁 45-59 岁 0-14 岁 45-59 岁 0-14 岁 0-14 岁 0-14 岁
#> [185] 15-29 岁 45-59 岁 60-74 岁 60-74 岁 15-29 岁 60-74 岁 0-14 岁 0-14 岁
#> [193] 75+ 岁 75+ 岁 75+ 岁 75+ 岁 45-59 岁 75+ 岁 15-29 岁 75+ 岁
#> Levels: 0-14 岁 15-29 岁 30-44 岁 45-59 岁 60-74 岁 75+ 岁
# Quantile-based grouping
cutage(ages, method = "quantile")
#> [1] 1-24.75 岁 49-78.25 岁 1-24.75 岁 25.75-48 岁 79.25-100 岁
#> [6] 1-24.75 岁 79.25-100 岁 25.75-48 岁 79.25-100 岁 1-24.75 岁
#> [11] 49-78.25 岁 25.75-48 岁 49-78.25 岁 1-24.75 岁 25.75-48 岁
#> [16] 79.25-100 岁 25.75-48 岁 49-78.25 岁 1-24.75 岁 49-78.25 岁
#> [21] 79.25-100 岁 1-24.75 岁 1-24.75 岁 1-24.75 岁 49-78.25 岁
#> [26] 79.25-100 岁 79.25-100 岁 25.75-48 岁 1-24.75 岁 25.75-48 岁
#> [31] 25.75-48 岁 1-24.75 岁 49-78.25 岁 49-78.25 岁 25.75-48 岁
#> [36] 1-24.75 岁 25.75-48 岁 79.25-100 岁 49-78.25 岁 49-78.25 岁
#> [41] 49-78.25 岁 49-78.25 岁 49-78.25 岁 79.25-100 岁 79.25-100 岁
#> [46] 79.25-100 岁 1-24.75 岁 79.25-100 岁 1-24.75 岁 25.75-48 岁
#> [51] 1-24.75 岁 1-24.75 岁 1-24.75 岁 25.75-48 岁 49-78.25 岁
#> [56] 79.25-100 岁 1-24.75 岁 25.75-48 岁 49-78.25 岁 49-78.25 岁
#> [61] 1-24.75 岁 25.75-48 岁 49-78.25 岁 49-78.25 岁 25.75-48 岁
#> [66] 49-78.25 岁 49-78.25 岁 79.25-100 岁 25.75-48 岁 79.25-100 岁
#> [71] 79.25-100 岁 25.75-48 岁 79.25-100 岁 49-78.25 岁 79.25-100 岁
#> [76] 25.75-48 岁 49-78.25 岁 1-24.75 岁 49-78.25 岁 1-24.75 岁
#> [81] 49-78.25 岁 25.75-48 岁 79.25-100 岁 25.75-48 岁 79.25-100 岁
#> [86] 49-78.25 岁 25.75-48 岁 79.25-100 岁 1-24.75 岁 25.75-48 岁
#> [91] 25.75-48 岁 79.25-100 岁 79.25-100 岁 25.75-48 岁 25.75-48 岁
#> [96] 25.75-48 岁 25.75-48 岁 79.25-100 岁 1-24.75 岁 79.25-100 岁
#> [101] 1-24.75 岁 79.25-100 岁 49-78.25 岁 79.25-100 岁 25.75-48 岁
#> [106] 25.75-48 岁 79.25-100 岁 49-78.25 岁 25.75-48 岁 49-78.25 岁
#> [111] 79.25-100 岁 79.25-100 岁 79.25-100 岁 <NA> 25.75-48 岁
#> [116] 25.75-48 岁 25.75-48 岁 79.25-100 岁 1-24.75 岁 1-24.75 岁
#> [121] 1-24.75 岁 <NA> 1-24.75 岁 79.25-100 岁 79.25-100 岁
#> [126] 79.25-100 岁 25.75-48 岁 1-24.75 岁 25.75-48 岁 49-78.25 岁
#> [131] 79.25-100 岁 49-78.25 岁 79.25-100 岁 1-24.75 岁 1-24.75 岁
#> [136] 1-24.75 岁 49-78.25 岁 1-24.75 岁 25.75-48 岁 25.75-48 岁
#> [141] 1-24.75 岁 79.25-100 岁 49-78.25 岁 1-24.75 岁 49-78.25 岁
#> [146] 25.75-48 岁 49-78.25 岁 25.75-48 岁 49-78.25 岁 25.75-48 岁
#> [151] 25.75-48 岁 1-24.75 岁 49-78.25 岁 25.75-48 岁 49-78.25 岁
#> [156] 49-78.25 岁 49-78.25 岁 25.75-48 岁 49-78.25 岁 1-24.75 岁
#> [161] 49-78.25 岁 1-24.75 岁 1-24.75 岁 49-78.25 岁 1-24.75 岁
#> [166] 79.25-100 岁 25.75-48 岁 25.75-48 岁 49-78.25 岁 79.25-100 岁
#> [171] 25.75-48 岁 1-24.75 岁 25.75-48 岁 1-24.75 岁 79.25-100 岁
#> [176] 1-24.75 岁 79.25-100 岁 79.25-100 岁 49-78.25 岁 1-24.75 岁
#> [181] 49-78.25 岁 1-24.75 岁 1-24.75 岁 1-24.75 岁 25.75-48 岁
#> [186] 49-78.25 岁 49-78.25 岁 49-78.25 岁 1-24.75 岁 49-78.25 岁
#> [191] 1-24.75 岁 1-24.75 岁 79.25-100 岁 49-78.25 岁 79.25-100 岁
#> [196] 79.25-100 岁 49-78.25 岁 79.25-100 岁 25.75-48 岁 79.25-100 岁
#> Levels: 1-24.75 岁 25.75-48 岁 49-78.25 岁 79.25-100 岁