Cut by group

cut_by_group(df, col_data, col_group, group, new_col, as_factor = FALSE)

Arguments

df

(dataframe) with a column of data to be cut and a column specifying the group of each observation.

col_data

(string) the column containing the data to be cut.

col_group

(string) the column containing the names of the groups according to which the data should be split.

group

(nested list) providing for each parameter value that should be analyzed in a categorical way: the name of the parameter (string), a series of breakpoints (vector) where the first breakpoints is typically -Inf and the last Inf, and a series of name which will describe each category (vector).

new_col

(string) the name of the new column in which the cut label should he stored.

as_factor

(logical) if TRUE, the new column is of type factor else character.

Examples

group <- list(
  list(
    "Dose administered during constant dosing interval",
    c(-Inf, 700, 900, 1200, Inf),
    c("<700", "700-900", "900-1200", ">1200")
  ),
  list(
    "Total dose administered",
    c(-Inf, 5000, 7000, 9000, Inf),
    c("<5000", "5000-7000", "7000-9000", ">9000")
  )
)

library(scda)
#> 
sd <- synthetic_cdisc_data("rcd_2021_03_22")
adsl <- sd$adsl
adex <- dplyr::mutate(sd$adex, ANL01FL = "Y")

adex_gp <- cut_by_group(adex, "AVAL", "PARAM", group, "AVAL_gp")

head(adex_gp[, c("PARAM", "AVAL", "AVAL_gp")])
#> # A tibble: 6 × 3
#>   PARAM                                              AVAL AVAL_gp 
#>   <fct>                                             <dbl> <chr>   
#> 1 Dose administered during constant dosing interval   720 700-900 
#> 2 Dose administered during constant dosing interval   720 700-900 
#> 3 Dose administered during constant dosing interval   960 900-1200
#> 4 Dose administered during constant dosing interval   480 <700    
#> 5 Dose administered during constant dosing interval   720 700-900 
#> 6 Dose administered during constant dosing interval   480 <700