Vectorised approach to group operations.
bys_count(by)bys_rank(..., by = NULL, from_last = FALSE)
bys_position(val, by = NULL, from_last = FALSE, ordered = TRUE)
bys_val(..., val, by = NULL, from_last = FALSE)
bys_nval(..., val, by = NULL, from_last = FALSE, n = 1, nmax = FALSE)
bys_min(val, by = NULL, na.rm = TRUE)
bys_max(val, by = NULL, na.rm = TRUE)
bys_sum(val, by = NULL, na.rm = TRUE)
bys_prod(val, by = NULL, na.rm = TRUE)
bys_cummin(val, by = NULL, na.rm = TRUE)
bys_cummax(val, by = NULL, na.rm = FALSE)
bys_cumsum(val, by = NULL, na.rm = TRUE)
bys_cumprod(val, by = NULL, na.rm = TRUE)
bys_lag(val, by = NULL, n = 1)
bys_lead(val, by = NULL, n = 1)
[atomic]
[atomic]
. Groups.
[atomic]
. Sort levels
[logical]
Sort order - TRUE
(descending) or FALSE
(ascending).
[atomic]
. Value
If TRUE
, values are sequential.
[integer]
Position.
[logical]
If TRUE
, use length([by])
when n
is greater than the number of records in a group.
If TRUE
, remove NA
values
x <- data.frame(
group = c(2, 2, 1, 2, 1, 1, 1, 2, 1, 1),
value = c(13, 14, 20, 9, 2, 1, 8, 18, 3, 17))
bys_count(x$group)
bys_position(x$value, by = x$group, from_last = TRUE)
bys_rank(by = x$group, val = x$value, from_last = TRUE)
bys_val(x$value, by = x$group, val = x$value, from_last = TRUE)
bys_nval(x$value, by = x$group, val = x$value, from_last = TRUE, n = 2)
bys_min(by = x$group, val = x$value)
bys_max(by = x$group, val = x$value)
bys_sum(by = x$group, val = x$value)
bys_prod(by = x$group, val = x$value)
bys_cummin(by = x$group, val = x$value)
bys_cummax(by = x$group, val = x$value)
bys_cumsum(by = x$group, val = x$value)
bys_cumprod(by = x$group, val = x$value)
bys_lag(by = x$group, val = x$value)
bys_lead(by = x$group, val = x$value)
Run the code above in your browser using DataLab