R package for Table1
1. devtools - for installing Table 2. survival - sample dataset mgus 3. dplyr - piping 1. haven - read sav 2. data.table - fast read spssStep 1 - Install Tablr package :
install.packages("devtools")
install.packages("survival")
library(devtools)
library(survival)
library(dplyr)
install_github("huiwk/Table")
library(Table)
set.seed(63467)
Step 2 - Preparation :
#Modify dataset, create random missing entries
dat<-survival::mgus[,c("age","sex","alb","creat","hgb")]
N<-80
inds <- as.matrix(expand.grid(1:nrow(dat), 1:ncol(dat)))
inds <- matrix(inds[!is.na(dat[inds])], ncol=2)
selected <- inds[sample(nrow(inds), N), ]
dat[selected] <- NA
#Create Par dataset [Mean(Sd) Median[IQR] Count(Pct) Missing(Pct) Order Parameter.name.to.display Parameters]
par<-data.frame(
Mean.Sd.=c(1,0,1,1,1)%>%as.logical,
Median.IQR.=c(1,0,1,1,1)%>%as.logical,
Count.Pct.=c(0,1,0,0,0)%>%as.logical,
Missing.Pct.=c(1,1,1,1,1)%>%as.logical,
Order=c(4,2,3,1,5)%>%as.integer,
Parameter.name.to.display=c("Age","Sex","Alb","Cr","Hgb"),
Parameters=dat%>%names
)
All_group<-TRUE
By_group<-TRUE
dat<-data.frame(dat,Study_Design=sample(0:2,dim(dat)[1],replace=TRUE))%>%tibble #Create grouping variable
group_var<-"Study_Design"
Step 3 - Function Test :
data.split(dat,par$Parameters,All_group,By_group,group_var,TRUE)->d
get.stat.par(par,par$Parameters)->p
mean_sd(d,as.vector(p[["Mean.Sd."]]),2,"(",")")
mean_sd(d,as.vector(p[["Mean.Sd."]]),3,"±","")
median_iqr(d,as.vector(p[["Median.IQR."]]),2,"[",",","]")
median_iqr(d,as.vector(p[["Median.IQR."]]),3,"[",",","]")
count_pct(d,as.vector(p[["Count.Pct."]]),2,"(","%)")
missing_pct(d,as.vector(p[["Missing.Pct."]]),2,",","%")
Table1(dat,par,All_group,By_group,group_var,
par$Parameters,
mean.sd.dp = 2, mean.sd.p1 = "±", mean.sd.p2 = "",
median.iqr.dp = 2, median.iqr.p1 = "[", median.iqr.p2 = ",", median.iqr.p3 = "]",
count.pct.dp = 2, count.pct.p1 = "(", count.pct.p2 = ")",
missing.pct.dp = 2, missing.pct.p1 = ",", missing.pct.p2 = "%")