1

I would like to create the below data:

           TRT01P numSubjectsFrequentEvents  numSubjectsSeriousEvents
1:    Drug a 25mg                          6                        3
2:    Drug a 75mg                          3                       NA
3:        Placebo                          5                        1

where numSubjectsFrequentEvents are unique subject counts with at least one AEDECOD, and where numSubjectsSeriousEvents are unique subject counts with at least one AEDECOD with AESER = "Y"

the input data are as below:

              USUBJID         TRT01P                              AEDECOD  AESER
  1: xxxxxxxxxxx010001 Drug a 75mg  Diabetes mellitus inadequate control     N
  2: xxxxxxxxxxx010001 Drug a 75mg                 Hypercholesterolaemia     N
  3: xxxxxxxxxxx010001 Drug a 75mg               Injection site reaction     N
  4: xxxxxxxxxxx010001 Drug a 75mg                          Hypertension     N
  5: xxxxxxxxxxx010001 Drug a 75mg                 Rotator cuff syndrome     N
 ---                                                                            
125: xxxxxxxxxxx210003 Drug a 25mg                             Dysphonia     N
126: xxxxxxxxxxx210003 Drug a 25mg                             Skin mass     N
127: xxxxxxxxxxx210004 Drug a 75mg           Injection site inflammation     N
128: xxxxxxxxxxx210004 Drug a 75mg           Injection site inflammation     N
129: xxxxxxxxxxx210004 Drug a 75mg           Injection site inflammation     N

I know I could create two data.table and merge them, but I am looking for a way to make the data in one data.table step.

ae.freq <- adae[, .(numSubjectsFrequentEvents = uniqueN(USUBJID)), by = "TRT01P"]
ae.sae <- adae[AESER == "Y", .(numSubjectsSeriousEvents = uniqueN(USUBJID)), by = "TRT01P"]
freq <- merge(ae.freq, ae.sae, all.x = TRUE)

In real life, we might have a lot of columns with different conditions, so it would be great if we could avoid creating a lot of data.table and merging them.

Thank you for the help

2 Answers 2

3

A possible solution

adae[, .(numSubjectsFrequentEvents = uniqueN(USUBJID),
         numSubjectsSeriousEvents = .SD[AESER == "Y",uniqueN(USUBJID)]), by = "TRT01P"]   
Sign up to request clarification or add additional context in comments.

Comments

0
library(dplyr)

df <- left_join(

df1 <-raw %>% 
  group_by(TRT01P,AEDECOD) %>% 
  summarize(count=length(AEDECOD)) %>% 
  mutate(numSubjectsFrequentEvents=ifelse(count>0,1,0)) %>% 
  group_by(TRT01P) %>% 
  summarize(numSubjectsFrequentEvents=sum(numSubjectsFrequentEvents))
,
df2 <-raw %>% 
  group_by(TRT01P,AEDECOD,AESER) %>% 
  summarize(count=length(AEDECOD)) %>%
  filter(AESER=="Y") %>% 
  mutate(numSubjectsSeriousEvents=ifelse(count>0,1,0)) %>% 
  group_by(TRT01P) %>% 
  summarize(numSubjectsSeriousEvents=sum(numSubjectsSeriousEvents)) 
,
by=c("TRT01P"))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.