Getting an error when i try to use the Tplyr for the table `adverse events by maximum severity`
jagadishkatam opened this issue · comments
I am trying to develop the adverse events by maximum severity table where i will be using the ADAE dataframe. I am taking the maximum severity values per USUBJID, AEDECOD and AESEV. If i pass the data into Tplyr as below
dt <- Tplyr::tplyr_table(adae, TRTA) %>%
set_pop_data(adsl) %>%
set_pop_treat_var(TRTA) %>%
set_pop_where(TRUE) %>%
Tplyr::add_layer(group_count(vars(AEDECOD,AESEV)) %>%
set_format_strings(f_str("xxx (xx.x%)", distinct_n, distinct_pct))) %>%
set_distinct_by(USUBJID) %>%
add_total_group() %>%
Tplyr::build()
I get the error as below
![image](https://private-user-images.githubusercontent.com/83913148/272768927-197a467c-3dca-48da-8c88-48913fb2af62.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MTM0OTQsIm5iZiI6MTcyMDYxMzE5NCwicGF0aCI6Ii84MzkxMzE0OC8yNzI3Njg5MjctMTk3YTQ2N2MtM2RjYS00OGRhLThjODgtNDg5MTNmYjJhZjYyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDEyMDYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVjMmNiYzdmMDEyNGU4YzllNjlkNTZlNGQ4ZDE2ODY2MzJlMTM3ZDA5N2E3MmY2ODg0NDdiNjJkMDAyOTdkOTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Xjk-MKXuJ8HH3StM-S2itWOz1JZa7sLDWzCULIT5OaU)
to want to get the output as below
![image](https://private-user-images.githubusercontent.com/83913148/272769289-c9302fc2-2a60-4891-b124-b2b558be6879.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MTM0OTQsIm5iZiI6MTcyMDYxMzE5NCwicGF0aCI6Ii84MzkxMzE0OC8yNzI3NjkyODktYzkzMDJmYzItMmE2MC00ODkxLWIxMjQtYjJiNTU4YmU2ODc5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDEyMDYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTczMjE5OGUzNGQwODYyYWQxOTliOTk0MmE4Y2EyMjQ4YWMyYjZkNTgxZTJjMDRhYWQ4OTk5MDBmOTcwOWRkNTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.pfLkUUc_JZDs0f7_Ke3zAVdUPWWf6izbhb74VNA0CR0)
any thoughts on how i can generate these type of tables using Tplyr
Hi @jagadishkatam. I would suggest doing this using a by variable instead of a nested count layer.
dt <- tplyr_table(adae, TRTA) %>%
set_pop_data(adsl) %>%
set_pop_treat_var(TRTA) %>%
set_pop_where(TRUE) %>%
set_distinct_by(USUBJID) %>%
add_total_group() %>%
add_layer(
group_count(AEDECOD, by = AESEV) %>%
set_format_strings(f_str("xxx (xx.x%)", distinct_n, distinct_pct))
) %>%
build()
It's not going to give that exact presentation - but with #129 it would allow you to post process into this format.
Does this help?
Thank you @mstackhouse for your prompt response, I tried your apporach of using by
and it created the row_label1 and row_label2, now since i wanted to parse row_label1 and row_label2 , a post processing is followed.
dt <- Tplyr::tplyr_table(adae, TRTA) %>%
set_pop_data(adsl) %>%
set_pop_treat_var(TRTA) %>%
set_pop_where(TRUE) %>%
Tplyr::add_layer(group_count(AESEV, by=all) %>%
set_format_strings(f_str("xxx (xx.x%)", distinct_n, distinct_pct))) %>%
set_distinct_by(USUBJID) %>%
Tplyr::add_layer(group_count(AESEV,by=AEDECOD) %>%
set_format_strings(f_str("xxx (xx.x%)", distinct_n, distinct_pct))) %>%
set_distinct_by(USUBJID) %>%
add_total_group() %>%
Tplyr::build()
firstrow <- dt[dt$ord_layer_2==1,c('row_label1','ord_layer_1','ord_layer_2')]
firstrow$ord_layer_2 <- 0
dt <- bind_rows(dt, firstrow) %>% mutate(ord_layer_1=ifelse(row_label1=='Subjects with any Adverse Events',0,ord_layer_1))
dt <- dt %>% mutate(row_label1=ifelse(!is.na(row_label2), paste(' ', row_label2),row_label1)) %>% arrange(ord_layer_1,ord_layer_2,row_label2)
it results in
![image](https://private-user-images.githubusercontent.com/83913148/273015628-70b6d5b2-fe63-4fb2-a955-d00130b0d09e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MTM0OTQsIm5iZiI6MTcyMDYxMzE5NCwicGF0aCI6Ii84MzkxMzE0OC8yNzMwMTU2MjgtNzBiNmQ1YjItZmU2My00ZmIyLWE5NTUtZDAwMTMwYjBkMDllLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDEyMDYzNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRmMGJlZjRjOWJiNzliNjdmODM0ODc3YTg3NjgwOTI5M2NkODVlMjQ0ZGI5NDY3Nzg1ZDA2ZjUyZTY1MzVmNDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.p6co7JHUABa8E2bJ5zfn9MRoF--jdvh5KSGdHQbxCfk)
one thing i am now struck with is about the page breaking by AEDECOD, which i am unable to understand as highlight in blue.
could you please let me know your thoughts
@jagadishkatam looks great! My plan is to introduce a function that can avoid that post processing.
The page breaking is out of scope of Tplyr itself and depends on the package that you're using. What package are you using for display?
Thank you @mstackhouse , I am using the reporter package
You would have to look into the documentation for reporter https://reporter.r-sassy.org/index.html