admiral icon indicating copy to clipboard operation
admiral copied to clipboard

`derive_vars_transposed`: extra variables are treated as `by_vars`

Open kaz462 opened this issue 4 months ago • 11 comments

Background Information

In derive_vars_transposed, if dataset_merge contains extra variables that not specified in by_vars/key_var/value_var , they will be treated as grouping variables. Example: test is a redundant variable that differs within USUBJID and FAREFID

cm <- tribble(
  ~USUBJID, ~CMGRPID, ~CMREFID, ~CMDECOD,
  "BP40257-1001", "14", "1192056", "PARACETAMOL"
)
facm <- tribble(
  ~USUBJID,     ~test, ~FAREFID, ~FATESTCD, ~FASTRESC,
  "BP40257-1001", "1", "1192056", "CMATC1CD", "N",
  "BP40257-1001", "3", "1192056", "CMATC2CD", "N02",
  "BP40257-1001", "3", "1192056", "CMATC3CD", "N02B",
  "BP40257-1001", "4", "1192056", "CMATC4CD", "N02BE"
)

cm %>%
  derive_vars_transposed(
    facm,
    by_vars = exprs(USUBJID, CMREFID = FAREFID),
    key_var = FATESTCD,
    value_var = FASTRESC
  ) 
# A tibble: 3 × 9
  USUBJID      CMGRPID CMREFID CMDECOD     test  CMATC1CD CMATC2CD CMATC3CD CMATC4CD
  <chr>        <chr>   <chr>   <chr>       <chr> <chr>    <chr>    <chr>    <chr>   
1 BP40257-1001 14      1192056 PARACETAMOL 1     N        NA       NA       NA      
2 BP40257-1001 14      1192056 PARACETAMOL 3     NA       N02      N02B     NA      
3 BP40257-1001 14      1192056 PARACETAMOL 4     NA       NA       NA       N02BE   

Expected results (need pre-processing to remove the unused variables):

cm %>%
  derive_vars_transposed(
    facm %>% select(-test),
    by_vars = exprs(USUBJID, CMREFID = FAREFID),
    key_var = FATESTCD,
    value_var = FASTRESC
  )
# A tibble: 1 × 8
  USUBJID      CMGRPID CMREFID CMDECOD     CMATC1CD CMATC2CD CMATC3CD CMATC4CD
  <chr>        <chr>   <chr>   <chr>       <chr>    <chr>    <chr>    <chr>   
1 BP40257-1001 14      1192056 PARACETAMOL N        N02      N02B     N02BE  

Definition of Done

add id_cols to derive_vars_transposed

kaz462 avatar Feb 05 '24 23:02 kaz462