如何转置以下数据框?
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"))
我有以下数据框:
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"))