diff --git a/NAMESPACE b/NAMESPACE index 1f75b7e..d23d438 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -3,15 +3,18 @@ export(collect_baseline) export(defmt_pct) export(format_base_char) +export(format_base_char_subgroup) export(format_disposition) export(format_trt_compliance) export(meta_sl) export(meta_sl_example) export(prepare_base_char) +export(prepare_base_char_subgroup) export(prepare_disposition) export(prepare_sl_summary) export(prepare_trt_compliance) export(react_base_char) export(rtf_base_char) +export(rtf_base_char_subgroup) export(rtf_disposition) export(rtf_trt_compliance) diff --git a/R/format_base_char_subgroup.R b/R/format_base_char_subgroup.R new file mode 100644 index 0000000..765f6da --- /dev/null +++ b/R/format_base_char_subgroup.R @@ -0,0 +1,98 @@ +# Copyright (c) 2024 Merck & Co., Inc., Rahway, NJ, USA and its affiliates. +# All rights reserved. +# +# This file is part of the metalite.sl program. +# +# metalite.sl is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +#' Prepare data for Subgroup Analysis for Baseline Characteristic +#' +#' @param outdata A metadata object created by [prepare_base_char_subgroup()]. +#' @param display Column wants to display on the table. +#' The term could be selected from `c("n", "prop", "total")`. +#' @param display_stat A vector of statistics term name. +#' The term name could be selected from +#' `c("mean", "sd", "se", "median", "q1 to q3", "range", "q1", "q3", "min", "max")`. +#' +#' @return A list of analysis raw datasets. +#' @export +#' +#' @examples +#' meta <- meta_sl_example() +#' +#' outdata <- prepare_base_char_subgroup( +#' meta, +#' population = "apat", +#' parameter = "age", +#' subgroup_var = "TRTA", +#' subgroup_header = c("SEX","TRTA"), +#' display_subgroup_total = TRUE +#' ) +#' +#' outdata |> format_base_char_subgroup() + +format_base_char_subgroup <- function( + outdata, + display = c("n","prop","total"), + display_stat = c("mean", "sd", "median", "range")) { + + out_all <- outdata$out_all + + outlst <- list() + for (i in seq_along(out_all)) { + tbl <- out_all[[i]] |> + format_base_char( + display_col = display, + digits_prop = 1, + display_stat = display_stat + ) + + #names(tbl$tbl)[-1] <- paste0(names(out_all[i]), names(tbl$tbl)[-1]) + names(tbl$tbl)[-1] <- ifelse(grepl("_label",names(tbl$tbl)[-1]) %in% "FALSE", paste0(names(out_all[i]), names(tbl$tbl)[-1]),names(tbl$tbl)[-1]) + + tbl$tbl$order <- as.numeric(rownames(tbl$tbl)) + + outlst[[i]] <- tbl$tbl + } + + names(outlst) <- names(out_all) + outlst <- outlst[-length(outlst)] + + i <- 1 + while (i < length(outlst)) { + if (i == 1) { + tbl <- merge(outlst[[i]], outlst[[i + 1]], by = c("name","var_label","order"), all = TRUE) + } + + i <- i + 1 + + if (i > 1 && i < length(outlst)) { + tbl <- merge(tbl, outlst[[i + 1]], by = c("name","var_label","order"), all = TRUE) + } + } + + + # If outdata$display_subgroup_total = FALSE, remove that part + #if (!outdata$display_subgroup_total) { + # rm_tot <- names(outlst$Total) # Columns from Total Section + # rm_tot <- rm_tot[!rm_tot %in% c("name", "order")] + + # tbl <- tbl[, -which(names(tbl) %in% rm_tot)] + #} + + outdata$tbl <- tbl |> dplyr::arrange(order) + outdata$display <- display + outdata$display_stat <- display_stat + outdata +} \ No newline at end of file diff --git a/R/meta_sl_example.R b/R/meta_sl_example.R index eb1dc2e..2fba5da 100644 --- a/R/meta_sl_example.R +++ b/R/meta_sl_example.R @@ -34,6 +34,10 @@ meta_sl_example <- function() { levels = c("Placebo", "Xanomeline Low Dose", "Xanomeline High Dose"), labels = c("Placebo", "Low Dose", "High Dose") ) + adsl$SEX <- factor(adsl$SEX, + levels = c("F", "M"), + labels = c("Female", "Male") + ) # Create a variable EOSSTT indicating the end of end of study status adsl$EOSSTT <- sample(x = c("Participants Ongoing", "Discontinued"), @@ -61,6 +65,10 @@ meta_sl_example <- function() { metalite::add_plan( analysis = "disp", population = "apat", observation = "apat", parameter = "disposition;medical-disposition" + ) |> + metalite::add_plan( + analysis = "base_char_subgroup", population = "apat", + observation = "apat", parameter = "age" ) meta <- metalite::meta_adam( @@ -131,6 +139,11 @@ meta_sl_example <- function() { title = "Disposition of Participant", label = "disposition table" ) |> + metalite::define_analysis( + name = "base_char_subgroup", + title = "Participant by Age Category and Sex", + label = "baseline characteristic sub group table" + ) |> metalite::meta_build() } diff --git a/R/prepare_base_char_subgroup.R b/R/prepare_base_char_subgroup.R new file mode 100644 index 0000000..b8bd609 --- /dev/null +++ b/R/prepare_base_char_subgroup.R @@ -0,0 +1,123 @@ +# Copyright (c) 2024 Merck & Co., Inc., Rahway, NJ, USA and its affiliates. +# All rights reserved. +# +# This file is part of the metalite.sl program. +# +# metalite.sl is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +#' Prepare data for treatment compliance table +#' +#' @param meta A metadata object created by metalite. +#' @param population A character value of population term name. +#' The term name is used as key to link information. +#' @param analysis A character value of analysis term name. +#' The term name is used as key to link information. +#' @param parameter A character value of parameter term name. +#' The term name is used as key to link information. +#' @param subgroup_var A character value of subgroup variable name in +#' observation data saved in `meta$data_observation`. +#' @param subgroup_header A character vector for column header hierarchy. +#' The first element will be the first level header and the second element +#' will be second level header. +#' @param display_subgroup_total A logic value of displaying the total group. +#' +#' @return A list of analysis raw datasets. +#' @export +#' +#' @examples +#' meta <- meta_sl_example() +#' outdata <- prepare_base_char_subgroup( +#' meta, +#' population = "apat", +#' parameter = "age", +#' subgroup_var = "TRTA", +#' subgroup_header = c("SEX","TRTA"), +#' display_subgroup_total = TRUE) + + +prepare_base_char_subgroup <- function( + meta, + population, + analysis = "base_char_subgroup", + parameter, + subgroup_var, + subgroup_header = c(meta$population[[population]]$group, subgroup_var), + display_subgroup_total = TRUE) { + + meta_original <- meta + + observation <- meta$plan[meta$plan$analysis==analysis,]$observation + + #Factor Level 1 Subgroup + meta$data_population[[subgroup_header[1]]] <- factor( + as.character(meta$data_population[[subgroup_header[1]]]), + levels = sort(unique(meta$data_population[[subgroup_header[1]]])) + ) + meta$data_observation[[subgroup_header[1]]] <- factor( + as.character(meta$data_observation[[subgroup_header[1]]]), + levels = sort(unique(meta$data_observation[[subgroup_header[1]]])) + ) + + #Factor Level 2 Subgroup + meta$data_population[[subgroup_var]] <- factor( + as.character(meta$data_population[[subgroup_var]]), + levels = sort(unique(meta$data_population[[subgroup_var]])) + ) + meta$data_observation[[subgroup_var]] <- factor( + as.character(meta$data_observation[[subgroup_var]]), + levels = sort(unique(meta$data_observation[[subgroup_var]])) + ) + + meta$observation[[observation]]$group <- subgroup_header[1] + meta$population[[population]]$group <- subgroup_header[1] + + # Obtain variables + par_var <- metalite::collect_adam_mapping(meta, parameter)$var + + meta_subgroup <- metalite::meta_split(meta, subgroup_header[2]) + + outdata_all <- prepare_sl_summary( + meta, + analysis = analysis, + population = meta$plan[meta$plan$analysis==analysis,]$population, + parameter = parameter + ) + + outdata_subgroup <- lapply( + meta_subgroup, + prepare_sl_summary, + analysis = analysis, + population = meta$plan[meta$plan$analysis==analysis,]$population, + parameter = parameter + ) + + out_all <- outdata_subgroup + out_all$Total <- outdata_all + + group <- as.character(outdata_subgroup[[1]]$group_label) + group <- group[!group %in% "Total"] + + outdata <- list( + group = group, + subgroup = tools::toTitleCase(tolower(names(outdata_subgroup))), + display_subgroup_total = display_subgroup_total, + meta = meta_original, + population = population, + observation = observation, + parameter = parameter, + out_all = out_all + ) + +} + \ No newline at end of file diff --git a/R/rtf_base_char_subgroup.R b/R/rtf_base_char_subgroup.R new file mode 100644 index 0000000..cbd9856 --- /dev/null +++ b/R/rtf_base_char_subgroup.R @@ -0,0 +1,290 @@ +# Copyright (c) 2024 Merck & Co., Inc., Rahway, NJ, USA and its affiliates. +# All rights reserved. +# +# This file is part of the metalite.sl program. +# +# metalite.sl is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +#' Subgroup Analysis for Baseline Characteristic +#' +#' @param outdata An `outdata` object created by [prepare_base_char_subgroup()] +#' @param source A character value of the data source. +#' @inheritParams r2rtf::rtf_page +#' @inheritParams r2rtf::rtf_body +#' @param footnotes A character vector of table footnotes. +#' @param title Term "analysis", "observation" and "population") for collecting title from metadata or a character vector of table titles. +#' @param path_outdata A character string of the outdata path. +#' @param path_outtable A character string of the outtable path. +#' +#' @return RTF file and source dataset for baseline characteristic table. +#' @export +#' +#' @examples +#' meta <- meta_sl_example() +#' +#' outdata <- prepare_base_char_subgroup( +#' meta, +#' population = "apat", +#' parameter = "age", +#' subgroup_var = "TRTA", +#' subgroup_header = c("SEX","TRTA"), +#' display_subgroup_total = TRUE +#' ) +#' +#' outdata |> +#' format_base_char_subgroup() |> +#' rtf_base_char_subgroup( +#' source = "Source: [CDISCpilot: adam-adsl]", +#' path_outdata = tempfile(fileext = ".Rdata"), +#' path_outtable = tempfile(fileext = ".rtf") +#' ) +#' +rtf_base_char_subgroup <- function( + outdata, + source, + col_rel_width = NULL, + text_font_size = 8, + orientation = "landscape", + footnotes = NULL, + title = NULL, + path_outdata = NULL, + path_outtable = NULL) { + + out_all <- outdata$out_all + tbl <- outdata$tbl + + #Add empty line before stats summary section + tbl<- tbl |> + dplyr::mutate(split = cumsum(ifelse(tolower(name) == outdata$display_stat[1], 1, 0))) |> + dplyr::group_by(split) |> + dplyr::group_modify(.f = ~dplyr::add_row(.data = ., + name = "", var_label= tbl[tolower(tbl$name) == outdata$display_stat[1],]$var_label)) + + tbl1 <- tbl[!names(tbl) %in% c("order","split")] + tgroup <- outdata$group + sgroup <- outdata$subgroup + if (outdata$display_subgroup_total) tgroup <- c(tgroup, "Total") + n_sgroup <- length(sgroup) + n_tgroup <- length(tgroup) + n_row <- nrow(tbl1) + n_col <- ncol(tbl1) + + if (!is.null(col_rel_width) && !n_col == length(col_rel_width)) { + stop( + "col_rel_width must have the same length (has ", + length(col_rel_width), + ") as as outdata$tbl has number of columns (has ", + n_col, ")." + ) + } + + # Define title + if (is.null(title)) { + title <- metalite::collect_title(outdata$meta, + outdata$population, + "", + outdata$parameter, + analysis = "base_char_subgroup") + } + + # Set default footnote + footnotes_stat <- NULL + if ("sd" %in% tolower(outdata$display_stat)) { + footnotes_stat <- c(footnotes_stat, "SD=Standard deviation") + } + if ("se" %in% tolower(outdata$display_stat)) { + footnotes_stat <- c(footnotes_stat, paste0("SE=Standard err", "or")) + } + if ("q1 to q3" %in% tolower(outdata$display_stat)) { + footnotes_stat <- c(footnotes_stat, "Q1=First quartile, Q3=Third quartile") + } + # combine footnotes for abbreviation of statistics + footnotes_stat <- paste(footnotes_stat, collapse = "; ") + # combine with user defined footnotes if not NULL + if (nchar(footnotes_stat) > 0) { + if (!is.null(footnotes)) { + footnotes <- paste0(footnotes_stat, ".\n", footnotes) + } else { + footnotes <- paste0(footnotes_stat, ".") + } + } + + col_tbl_within <- outdata$display + + col_tbl_within <- col_tbl_within |> + (\(list) list[list %in% c("n","prop")])() |> + unique() + + colhead_within <- paste( + vapply( + X = col_tbl_within, + FUN.VALUE = "character", + FUN = switch, + "n" = "n", + "prop" = "(%)" + ), + collapse = " | " + ) + + colhead_1_within <- paste(sgroup, collapse = " |") + colhead_2_within <- paste(rep(tgroup, n_sgroup), collapse = " | ") + colhead_3_within <- paste(rep(colhead_within, n_sgroup * n_tgroup), collapse = " | ") + + colborder_within <- vapply( + X = col_tbl_within, + FUN.VALUE = "character", + FUN = switch, + "n" = "single", + "prop" = "", + USE.NAMES = FALSE + ) + + rwidth_3_within <- rep(1, length(col_tbl_within) * n_sgroup * n_tgroup) + + rwidth_2_within <- tapply( + rwidth_3_within, + c(rep(1:(n_sgroup * n_tgroup), each = length(col_tbl_within))), + sum + ) + names(rwidth_2_within) <- NULL + + rwidth_1_within <- tapply( + rwidth_3_within, + c(rep(1:n_sgroup, each = length(col_tbl_within) * n_tgroup)), + sum + ) + names(rwidth_1_within) <- NULL + + + colborder_within <- rep(colborder_within, n_sgroup * n_tgroup) + + # Column headers + + colheader <- c( + paste0(" | ", colhead_1_within), + paste0(" | ", colhead_2_within), + paste0(" | ", colhead_3_within) + ) + + # Relative width + + if (is.null(col_rel_width)) { + rwidth_1 <- c(2, rwidth_1_within) + rwidth_2 <- c(2, rwidth_2_within) + rwidth_3 <- c(2, rwidth_3_within) + } else { + rwidth_3 <- col_rel_width + + rwidth_2 <- tapply( + col_rel_width[2:length(col_rel_width)], + c(rep(1:(n_sgroup * n_tgroup), each = length(col_tbl_within))), + sum + ) + + rwidth_2 <- c( + rwidth_3[1], + rwidth_2 + ) + + + rwidth_1 <- tapply( + col_rel_width[2:length(col_rel_width)], + c(rep(1:n_sgroup, each = length(col_tbl_within) * n_tgroup)), + sum + ) + + rwidth_1 <- c( + rwidth_3[1], + rwidth_1 + ) + } + + if ((sum(rwidth_1) != sum(rwidth_2)) || (sum(rwidth_1) != sum(rwidth_3))) { + stop("Width calculation breaks, contact developer.") + } + + # Column border + border_top2 <- c("", rep("single", n_sgroup * n_tgroup)) + border_top3 <- c("", rep("single", n_sgroup * n_tgroup * 2)) + + border_left2 <- c("single", rep("single", n_sgroup * n_tgroup)) + border_left3 <- c("single", colborder_within) + border_left4 <- c(rep("single",2), colborder_within) + + # Using order number to customize row format + + text_justification <- c("l", rep("l", n_sgroup * n_tgroup * 2)) + #text_format <- c(rep("", 1 + n_sgroup * n_tgroup * 2), "b") + + text_indent <- matrix(0, nrow = n_row, ncol = n_col) + text_indent[, 1] <- ifelse(FALSE, 0, 100) + text_indent[1, 1] <- 0 + + # Using r2rtf + outdata$rtf <- tbl1 |> + r2rtf::rtf_page(orientation = orientation) |> + r2rtf::rtf_title(title) |> + r2rtf::rtf_colheader( + colheader = colheader[1], + col_rel_width = rwidth_1, + text_font_size = text_font_size) |> + r2rtf::rtf_colheader( + colheader = colheader[2], + border_top = border_top2, + border_left = border_left2, + col_rel_width = rwidth_2, + text_font_size = text_font_size + ) |> + r2rtf::rtf_colheader( + colheader = colheader[3], + border_top = border_top3, + border_left = border_left3, + col_rel_width = rwidth_3, + text_font_size = text_font_size + ) |> + r2rtf::rtf_body( + page_by = "var_label", + col_rel_width = c(rwidth_3,1), + border_left = border_left4, + text_justification = text_justification, + text_indent_first = text_indent, + text_indent_left = text_indent, + #text_format = text_format, + text_font_size = text_font_size + ) + + if (!is.null(footnotes)) { + outdata$rtf <- outdata$rtf |> + r2rtf::rtf_footnote(footnotes, + text_font_size = text_font_size + ) + } + + if (!is.null(source)) { + outdata$rtf <- outdata$rtf |> + r2rtf::rtf_source(source, + text_font_size = text_font_size + ) + } + + # Prepare output + rtf_output(outdata, path_outdata, path_outtable) + + #to_pdf( + # path_outtable, + # output = gsub("\\.[[:alnum:]]+$", ".pdf", path_outtable), + # timeout = 120, + # UserInstallation = NULL + #) +} \ No newline at end of file diff --git a/man/format_base_char_subgroup.Rd b/man/format_base_char_subgroup.Rd new file mode 100644 index 0000000..34a34e8 --- /dev/null +++ b/man/format_base_char_subgroup.Rd @@ -0,0 +1,42 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/format_base_char_subgroup.R +\name{format_base_char_subgroup} +\alias{format_base_char_subgroup} +\title{Prepare data for Subgroup Analysis for Baseline Characteristic} +\usage{ +format_base_char_subgroup( + outdata, + display = c("n", "prop", "total"), + display_stat = c("mean", "sd", "median", "range") +) +} +\arguments{ +\item{outdata}{A metadata object created by \code{\link[=prepare_base_char_subgroup]{prepare_base_char_subgroup()}}.} + +\item{display}{Column wants to display on the table. +The term could be selected from \code{c("n", "prop", "total")}.} + +\item{display_stat}{A vector of statistics term name. +The term name could be selected from +\code{c("mean", "sd", "se", "median", "q1 to q3", "range", "q1", "q3", "min", "max")}.} +} +\value{ +A list of analysis raw datasets. +} +\description{ +Prepare data for Subgroup Analysis for Baseline Characteristic +} +\examples{ +meta <- meta_sl_example() + +outdata <- prepare_base_char_subgroup( + meta, + population = "apat", + parameter = "age", + subgroup_var = "TRTA", + subgroup_header = c("SEX","TRTA"), + display_subgroup_total = TRUE +) + +outdata |> format_base_char_subgroup() +} diff --git a/man/prepare_base_char_subgroup.Rd b/man/prepare_base_char_subgroup.Rd new file mode 100644 index 0000000..c7096c5 --- /dev/null +++ b/man/prepare_base_char_subgroup.Rd @@ -0,0 +1,53 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/prepare_base_char_subgroup.R +\name{prepare_base_char_subgroup} +\alias{prepare_base_char_subgroup} +\title{Prepare data for treatment compliance table} +\usage{ +prepare_base_char_subgroup( + meta, + population, + analysis = "base_char_subgroup", + parameter, + subgroup_var, + subgroup_header = c(meta$population[[population]]$group, subgroup_var), + display_subgroup_total = TRUE +) +} +\arguments{ +\item{meta}{A metadata object created by metalite.} + +\item{population}{A character value of population term name. +The term name is used as key to link information.} + +\item{analysis}{A character value of analysis term name. +The term name is used as key to link information.} + +\item{parameter}{A character value of parameter term name. +The term name is used as key to link information.} + +\item{subgroup_var}{A character value of subgroup variable name in +observation data saved in \code{meta$data_observation}.} + +\item{subgroup_header}{A character vector for column header hierarchy. +The first element will be the first level header and the second element +will be second level header.} + +\item{display_subgroup_total}{A logic value of displaying the total group.} +} +\value{ +A list of analysis raw datasets. +} +\description{ +Prepare data for treatment compliance table +} +\examples{ +meta <- meta_sl_example() +outdata <- prepare_base_char_subgroup( + meta, + population = "apat", + parameter = "age", + subgroup_var = "TRTA", + subgroup_header = c("SEX","TRTA"), + display_subgroup_total = TRUE) +} diff --git a/man/rtf_base_char_subgroup.Rd b/man/rtf_base_char_subgroup.Rd new file mode 100644 index 0000000..0b50cdf --- /dev/null +++ b/man/rtf_base_char_subgroup.Rd @@ -0,0 +1,67 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/rtf_base_char_subgroup.R +\name{rtf_base_char_subgroup} +\alias{rtf_base_char_subgroup} +\title{Subgroup Analysis for Baseline Characteristic} +\usage{ +rtf_base_char_subgroup( + outdata, + source, + col_rel_width = NULL, + text_font_size = 8, + orientation = "landscape", + footnotes = NULL, + title = NULL, + path_outdata = NULL, + path_outtable = NULL +) +} +\arguments{ +\item{outdata}{An \code{outdata} object created by \code{\link[=prepare_base_char_subgroup]{prepare_base_char_subgroup()}}} + +\item{source}{A character value of the data source.} + +\item{col_rel_width}{Column relative width in a vector e.g. c(2,1,1) refers to 2:1:1. +Default is NULL for equal column width.} + +\item{text_font_size}{Text font size. To vary text font size by column, use +numeric vector with length of vector equal to number of columns +displayed e.g. c(9,20,40).} + +\item{orientation}{Orientation in 'portrait' or 'landscape'.} + +\item{footnotes}{A character vector of table footnotes.} + +\item{title}{Term "analysis", "observation" and "population") for collecting title from metadata or a character vector of table titles.} + +\item{path_outdata}{A character string of the outdata path.} + +\item{path_outtable}{A character string of the outtable path.} +} +\value{ +RTF file and source dataset for baseline characteristic table. +} +\description{ +Subgroup Analysis for Baseline Characteristic +} +\examples{ +meta <- meta_sl_example() + +outdata <- prepare_base_char_subgroup( + meta, + population = "apat", + parameter = "age", + subgroup_var = "TRTA", + subgroup_header = c("SEX","TRTA"), + display_subgroup_total = TRUE +) + +outdata |> + format_base_char_subgroup() |> + rtf_base_char_subgroup( + source = "Source: [CDISCpilot: adam-adsl]", + path_outdata = tempfile(fileext = ".Rdata"), + path_outtable = tempfile(fileext = ".rtf") + ) + +} diff --git a/vignettes/metalite-sl-subgroup.Rmd b/vignettes/metalite-sl-subgroup.Rmd new file mode 100644 index 0000000..80071ca --- /dev/null +++ b/vignettes/metalite-sl-subgroup.Rmd @@ -0,0 +1,109 @@ +--- +title: "Subgroup Analysis for Baseline Characteristic" +output: rmarkdown::html_vignette +date: "2024-07-01" +vignette: > + %\VignetteEngine{knitr::rmarkdown} + %\VignetteIndexEntry{Subgroup Analysis for Baseline Characteristic} + %\VignetteEncoding{UTF-8} + +--- + +```{r, include=FALSE} +knitr::opts_chunk$set( + comment = "#>", + collapse = TRUE, + out.width = "100%", + dpi = 150 +) +``` + +```{r} +library(metalite) +library(metalite.sl) +``` + +## Overview + +The baseline characteristic subgroup analysis aims to provide tables to summarize details of participants by subgroup. +The development of baseline characteristic subgroup analysis involves functions: + +- `prepare_base_char_subgroup()`: prepare analysis raw datasets. +- `format_base_char_subgroup()`: prepare analysis (mock) outdata with proper format. +- `rtf_base_char_subgroup()`: transfer (mock) output dataset to RTF table. + +### Analysis preparation + +The `prepare_base_char_subgroup()` function is designed to be used for multiple purposes. +The input of the function is a `meta` object created by the metalite package. + +```{r} +meta <- meta_sl_example() +``` + +The output of the function is an `outdata` object containing a list of analysis +raw datasets. Key arguments are: + +- `subgroup_var`: a character value of subgroup variable name in observation data saved in meta$data_observation. +- `subgroup_header`: a character vector for column header hierarchy. The first element will be the first level header and the second element will be second level header. + +```{r} +outdata <- prepare_base_char_subgroup( + meta, + population = "apat", + parameter = "age", + subgroup_var = "TRTA", + subgroup_header = c("SEX","TRTA"), + display_subgroup_total = TRUE +) +``` + +The output dataset contains commonly used statistics within each `subgroup_var`. + +```{r} +outdata$out_all$`Placebo` +outdata$out_all$`High Dose` +outdata$out_all$`Low Dose` +``` + + +The information about subgroup saved with `outdata$group` and `outdata$subgroup`. + +```{r} +outdata$group +outdata$subgroup +``` + +`n_pop`: participants in population within each `subgroup_var`. + +```{r} +outdata$out_all$`Placebo`$n +outdata$out_all$`High Dose`$n +outdata$out_all$`Low Dose`$n +``` + +### Format output + +`format_base_char_subgroup` to prepare analysis dataset before generate RTF output + +```{r} +tbl <- format_base_char_subgroup(outdata) +head(tbl$tbl) +``` + +### RTF output +`rtf_base_char_subgroup` to generate RTF output + +```{r warning=FALSE} +outdata |> + format_base_char_subgroup() |> + rtf_base_char_subgroup( + source = "Source: [CDISCpilot: adam-adsl]", + path_outdata = tempfile(fileext = ".Rdata"), + path_outtable = tempfile(fileext = ".rtf") + ) +``` + +```{r, out.width = "100%", out.height = "400px", echo = FALSE, fig.align = "center"} +knitr::include_graphics("outtable/bar0char0subgroup.pdf") +``` \ No newline at end of file diff --git a/vignettes/metalite-sl.Rmd b/vignettes/metalite-sl.Rmd index d0c2964..c2850eb 100644 --- a/vignettes/metalite-sl.Rmd +++ b/vignettes/metalite-sl.Rmd @@ -190,7 +190,7 @@ outdata <- meta |> outdata ``` -```{r} +```{r, eval=FALSE} outdata |> format_disposition() |> rtf_disposition( diff --git a/vignettes/outtable/bar0char0subgroup.pdf b/vignettes/outtable/bar0char0subgroup.pdf new file mode 100644 index 0000000..ae79954 Binary files /dev/null and b/vignettes/outtable/bar0char0subgroup.pdf differ diff --git a/vignettes/outtable/bar0char0subgroup.rtf b/vignettes/outtable/bar0char0subgroup.rtf new file mode 100644 index 0000000..31b2758 --- /dev/null +++ b/vignettes/outtable/bar0char0subgroup.rtf @@ -0,0 +1,505 @@ +{\rtf1\ansi +\deff0\deflang1033 +{\fonttbl{\f0\froman\fcharset161\fprq2 Times New Roman;} +{\f1\froman\fcharset161\fprq2 Times New Roman Greek;} +{\f2\fswiss\fcharset161\fprq2 Arial Greek;} +{\f3\fswiss\fcharset161\fprq2 Arial;} +{\f4\fswiss\fcharset161\fprq2 Helvetica;} +{\f5\fswiss\fcharset161\fprq2 Calibri;} +{\f6\froman\fcharset161\fprq2 Georgia;} +{\f7\ffroman\fcharset161\fprq2 Cambria;} +{\f8\fmodern\fcharset161\fprq2 Courier New;} +{\f9\ftech\fcharset161\fprq2 Symbol;} +} + + +\paperw15840\paperh12240\landscape + +\margl1440\margr1440\margt2880\margb1800\headery1800\footery1800 + +{\pard\hyphpar\sb180\sa180\fi0\li0\ri0\qc\fs24{\f0 Participant by Age Category and Sex}\line\fs24{\f0 All Participants as Treated}\par} + + +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrdb\brdrw15\clbrdrb\brdrw15\clvertalb\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrdb\brdrw15\clbrdrb\brdrw15\clvertalb\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrdb\brdrw15\clbrdrb\brdrw15\clvertalb\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrdb\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx12240 +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Placebo}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Low Dose}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 High Dose}\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalb\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx12240 +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Female}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Male}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Total}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Female}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Male}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Total}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Female}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Male}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Total}\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalb\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalb\cellx12240 +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 n}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 (%)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 n}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 (%)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 n}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 (%)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 n}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 (%)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 n}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 (%)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 n}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 (%)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 n}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 (%)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 n}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 (%)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 n}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 (%)}\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 Participants in population}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 53}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 33}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 86}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 50}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 34}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 84}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 40}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 44}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 84}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrs\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 Age (years)}\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi100\li100\ri0\ql\fs16{\f0 <65}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 9}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (17.0)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 5}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (15.2)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 14}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (16.3)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 5}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (10.0)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 3}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (8.8)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 8}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (9.5)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 5}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (12.5)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 6}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (13.6)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 11}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (13.1)}\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi100\li100\ri0\ql\fs16{\f0 >80}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 22}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (41.5)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 8}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (24.2)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 30}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (34.9)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 17}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (34.0)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 12}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (35.3)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 29}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (34.5)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 7}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (17.5)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 11}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (25.0)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 18}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (21.4)}\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi100\li100\ri0\ql\fs16{\f0 65-80}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 22}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (41.5)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 20}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (60.6)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 42}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (48.8)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 28}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (56.0)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 19}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (55.9)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 47}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (56.0)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 28}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (70.0)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 27}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (61.4)}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 55}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 (65.5)}\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi100\li100\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi100\li100\ri0\ql\fs16{\f0 Mean}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 76.4}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 73.4}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 75.2}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 75.7}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 75.6}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 75.7}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 74.7}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 74.1}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 74.4}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi100\li100\ri0\ql\fs16{\f0 SD}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 8.7}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 8.1}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 8.6}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 8.1}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 8.7}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 8.3}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 7.7}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 8.2}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 7.9}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi100\li100\ri0\ql\fs16{\f0 Median}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 78.0}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 74.0}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 76.0}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 77.5}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 77.5}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 77.5}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 76.0}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 77.0}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 76.0}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi100\li100\ri0\ql\fs16{\f0 Range}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 59 to 89}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 52 to 85}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 52 to 89}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 54 to 87}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 51 to 88}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 51 to 88}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 56 to 88}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 56 to 86}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 56 to 88}\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx1224 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx1836 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx2448 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx3060 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx3672 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx4284 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx4896 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx5508 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx6120 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx6732 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx7344 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx7956 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx8568 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx9180 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx9792 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx10404 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx11016 +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx11628 +\clbrdrl\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrs\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi100\li100\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 }\cell +\intbl\row\pard +\trowd\trgaph108\trleft0\trqc +\clbrdrl\brdrs\brdrw15\clbrdrt\brdrw15\clbrdrr\brdrs\brdrw15\clbrdrb\brdrdb\brdrw15\clvertalt\cellx12240 +\pard\hyphpar0\sb15\sa15\fi0\li0\ri0\ql\fs16{\f0 SD=Standard deviation.}\cell +\intbl\row\pard +{\pard\hyphpar\sb15\sa15\fi0\li0\ri0\qc\fs16{\f0 Source: [CDISCpilot: adam-adsl]}\par} + +}