Как мне перенести следующий фрейм данных? - PullRequest
1 голос
/ 20 марта 2020

У меня есть следующий фрейм данных:

 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

1 Ответ

0 голосов
/ 20 марта 2020

В наборе данных могут быть дубликаты. Таким образом, по умолчанию было бы 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>

data

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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...