如何转置以下数据框?

How do I transpose the following data frame?

我有以下数据框:

 STUDYID USUBJID        IDVAR     IDVARVAL                                    
  <chr>   <chr>             <chr>     <chr>                                       
1 study1  1                 DSSEQ     3                                           
2 study1  1                 DSSTINV   N                                           
3 study1  1                 DSDECOD1  SCREEN FAILURE                              
4 study1  2                 DSSEQ     1                                           
5 study1  2                 DSDECOD2  ADVERSE EVENT 

而且我想把它转成下面的格式

 STUDYID USUBJID    DSSEQ   DSSTINV   DSDECOD1    DSDECOD2                                    
1 study1  1           3       N       SCREEN FAILURE                              
4 study1  2           1                            ADVERSE EVENT

我用过:

supp_ds <- dcast(suppdsT, STUDYID + USUBJID ~ IDVAR, value.var="IDVARVAL")

但它给了我类似的东西:

  STUDYID USUBJID DSDECOD1 DSDECOD2 DSDECOD3 DSDECOD4 DSDECOD7
1 study1   1        1        0        0        0        0
2 study2   2        0        0        0        0

数据集中可能存在重复项。因此,默认情况下,将 fun.aggregate 视为 length。相反,我们可以为唯一标识符创建一个序列列

library(data.table)
dcast(setDT(suppdsT), STUDYID + USUBJID ~ IDVAR + rowid(USUBJID), 
                 value.var = 'IDVARVAL')
#   STUDYID USUBJID     DSDECOD1_3    DSDECOD2_2 DSSEQ_1 DSSTINV_2
#1:  study1       1 SCREEN FAILURE          <NA>       3         N
#2:  study1       2           <NA> ADVERSE EVENT       1      <NA>

数据

suppdsT <- structure(list(STUDYID = c("study1", "study1", "study1", "study1", 
"study1"), USUBJID = c(1L, 1L, 1L, 2L, 2L), IDVAR = c("DSSEQ", 
"DSSTINV", "DSDECOD1", "DSSEQ", "DSDECOD2"), IDVARVAL = c("3", 
"N", "SCREEN FAILURE", "1", "ADVERSE EVENT")), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5"))