{
  "_id": "6acb6231fe5cc25786e8f158",
  "Package": "tplyr2",
  "Title": "A Grammar of Clinical Summary Tables",
  "Version": "0.2.0",
  "Authors@R": "person(\"Mike\", \"Stackhouse\", , \"mike.stackhouse@atorusresearch.com\", role = c(\"aut\", \"cre\"))",
  "Description": "Implements a grammar of summary data for clinical reports.\nClinical summary tables are decomposed into modular layers,\neach representing an independent summary block. Supports count,\ndescriptive statistics, and shift layer types with a\ndeclarative spec-based API built on data.table for performance.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/atorus-research/tplyr2,\nhttps://atorus-research.github.io/tplyr2/",
  "BugReports": "https://github.com/atorus-research/tplyr2/issues",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "LazyData": "true",
  "Config/roxygen2/version": "8.0.0",
  "Config/pak/sysreqs": "libicu-dev",
  "Repository": "https://atorus-research.r-universe.dev",
  "Date/Publication": "2026-08-12 12:26:34 UTC",
  "RemoteUrl": "https://github.com/atorus-research/tplyr2",
  "RemoteRef": "HEAD",
  "RemoteSha": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-11 10:02:04 UTC",
    "User": "root"
  },
  "Author": "Mike Stackhouse [aut, cre]",
  "Maintainer": "Mike Stackhouse <mike.stackhouse@atorusresearch.com>",
  "_user": "atorus-research",
  "_type": "src",
  "_file": "tplyr2_0.2.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/47d8e2ca2eac45306ef2c28528a7b4c1c6666b13062cd30be91cad9131019fff",
  "_filesize": 850073,
  "_sha256": "47d8e2ca2eac45306ef2c28528a7b4c1c6666b13062cd30be91cad9131019fff",
  "_expires": "2027-01-19T10:17:19.000Z",
  "_created": "2026-10-11T10:02:04.000Z",
  "_published": "2026-10-11T10:17:21.731Z",
  "_buildurl": "https://github.com/r-universe/atorus-research/actions/runs/38130299459",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 114443711122,
      "time": 152,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11698404647"
    },
    {
      "job": 114443711194,
      "time": 142,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11698968958"
    },
    {
      "job": 114443711138,
      "time": 140,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11699246121"
    },
    {
      "job": 114443711183,
      "time": 138,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11698673684"
    },
    {
      "job": 114443097229,
      "time": 193,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11698818989"
    },
    {
      "job": 114443711131,
      "time": 96,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11698138224"
    },
    {
      "job": 114443711228,
      "time": 139,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11698339695"
    },
    {
      "job": 114443711188,
      "time": 137,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11699022431"
    },
    {
      "job": 114443711150,
      "time": 142,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11698789207"
    }
  ],
  "_upstream": "https://github.com/atorus-research/tplyr2",
  "_commit": {
    "id": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
    "author": "mike.stackhouse <Mike.Stackhouse@atorusresearch.com>",
    "committer": "mike.stackhouse <Mike.Stackhouse@atorusresearch.com>",
    "message": "Record the accepted CRAN submission\n\ndevtools::submit_cran() updated CRAN-SUBMISSION to the resubmission that CRAN\naccepted (0e04b13). The file is .Rbuildignore'd, so it is bookkeeping only and\ndoes not appear in the released tarball.\n\nCo-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>\n",
    "time": 1786537594
  },
  "_maintainer": {
    "name": "Mike Stackhouse",
    "email": "mike.stackhouse@atorusresearch.com",
    "login": "mstackhouse",
    "twitter": "@mike_at_atorus",
    "description": "Chief Innovation Officer at Atorus Research. MIDS graduate from UC Berkeley. Mike works with Python, R, and Go.",
    "uuid": 31387567
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "data.table",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "yaml",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "atorus-research",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-07",
      "n": 2
    },
    {
      "week": "2026-08",
      "n": 1
    },
    {
      "week": "2026-30",
      "n": 17
    },
    {
      "week": "2026-31",
      "n": 12
    },
    {
      "week": "2026-33",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "v0.2.0",
      "date": "2026-08-02"
    }
  ],
  "_stars": 5,
  "_contributors": [
    {
      "user": "mstackhouse",
      "count": 114,
      "uuid": 31387567
    }
  ],
  "_userbio": {
    "uuid": 64594907,
    "type": "organization",
    "name": "Atorus Research",
    "followers": 87
  },
  "_downloads": {
    "count": 224,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/tplyr2"
  },
  "_devurl": "https://github.com/atorus-research/tplyr2",
  "_pkgdown": "https://atorus-research.github.io/tplyr2/",
  "_searchresults": 61,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/tplyr2.html",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/atorus-research/tplyr2",
  "_realowner": "atorus-research",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.2.0",
      "date": "2026-08-08"
    }
  ],
  "_exports": [
    "apply_conditional_format",
    "apply_formats",
    "apply_row_masks",
    "as_display",
    "assoc_test",
    "collapse_row_labels",
    "custom_group",
    "f_str",
    "generate_row_ids",
    "get_data_labels",
    "group_analyze",
    "group_count",
    "group_desc",
    "group_shift",
    "is_pop_data",
    "is_tplyr_layer",
    "is_tplyr_spec",
    "label",
    "layer_settings",
    "pop_data",
    "proportion_ci",
    "replace_leading_whitespace",
    "str_extract_num",
    "str_indent_wrap",
    "total_group",
    "tplyr_build",
    "tplyr_from_ard",
    "tplyr_header_n",
    "tplyr_layers",
    "tplyr_meta",
    "tplyr_meta_result",
    "tplyr_meta_subset",
    "tplyr_numeric_data",
    "tplyr_read_spec",
    "tplyr_spec",
    "tplyr_stats_data",
    "tplyr_to_ard",
    "tplyr_write_spec",
    "tplyr2_options"
  ],
  "_datasets": [
    {
      "name": "tplyr_adae",
      "title": "Adverse events analysis dataset",
      "object": "tplyr_adae",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "STUDYID",
        "SITEID",
        "USUBJID",
        "TRTA",
        "TRTAN",
        "AGE",
        "AGEGR1",
        "AGEGR1N",
        "RACE",
        "RACEN",
        "SEX",
        "SAFFL",
        "TRTSDT",
        "TRTEDT",
        "ASTDT",
        "ASTDTF",
        "ASTDY",
        "AENDT",
        "AENDY",
        "ADURN",
        "ADURU",
        "AETERM",
        "AELLT",
        "AELLTCD",
        "AEDECOD",
        "AEPTCD",
        "AEHLT",
        "AEHLTCD",
        "AEHLGT",
        "AEHLGTCD",
        "AEBODSYS",
        "AESOC",
        "AESOCCD",
        "AESEV",
        "AESER",
        "AESCAN",
        "AESCONG",
        "AESDISAB",
        "AESDTH",
        "AESHOSP",
        "AESLIFE",
        "AESOD",
        "AEREL",
        "AEACN",
        "AEOUT",
        "AESEQ",
        "TRTEMFL",
        "AOCCFL",
        "AOCCSFL",
        "AOCCPFL",
        "AOCC02FL",
        "AOCC03FL",
        "AOCC04FL",
        "CQ01NAM",
        "AOCC01FL"
      ],
      "rows": 200,
      "table": true,
      "tojson": true
    },
    {
      "name": "tplyr_adlb",
      "title": "Laboratory data analysis dataset",
      "object": "tplyr_adlb",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "STUDYID",
        "SUBJID",
        "USUBJID",
        "TRTP",
        "TRTPN",
        "TRTA",
        "TRTAN",
        "TRTSDT",
        "TRTEDT",
        "AGE",
        "AGEGR1",
        "AGEGR1N",
        "RACE",
        "RACEN",
        "SEX",
        "COMP24FL",
        "DSRAEFL",
        "SAFFL",
        "AVISIT",
        "AVISITN",
        "ADY",
        "ADT",
        "VISIT",
        "VISITNUM",
        "PARAM",
        "PARAMCD",
        "PARAMN",
        "PARCAT1",
        "AVAL",
        "BASE",
        "CHG",
        "A1LO",
        "A1HI",
        "R2A1LO",
        "R2A1HI",
        "BR2A1LO",
        "BR2A1HI",
        "ANL01FL",
        "ALBTRVAL",
        "ANRIND",
        "BNRIND",
        "ABLFL",
        "AENTMTFL",
        "LBSEQ",
        "LBNRIND",
        "LBSTRESN"
      ],
      "rows": 200,
      "table": true,
      "tojson": true
    },
    {
      "name": "tplyr_adsl",
      "title": "Subject-level analysis dataset",
      "object": "tplyr_adsl",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "STUDYID",
        "USUBJID",
        "SUBJID",
        "SITEID",
        "SITEGR1",
        "ARM",
        "TRT01P",
        "TRT01PN",
        "TRT01A",
        "TRT01AN",
        "TRTSDT",
        "TRTEDT",
        "TRTDURD",
        "AVGDD",
        "CUMDOSE",
        "AGE",
        "AGEGR1",
        "AGEGR1N",
        "AGEU",
        "RACE",
        "RACEN",
        "SEX",
        "ETHNIC",
        "SAFFL",
        "ITTFL",
        "EFFFL",
        "COMP8FL",
        "COMP16FL",
        "COMP24FL",
        "DISCONFL",
        "DSRAEFL",
        "DTHFL",
        "BMIBL",
        "BMIBLGR1",
        "HEIGHTBL",
        "WEIGHTBL",
        "EDUCLVL",
        "DISONSDT",
        "DURDIS",
        "DURDSGR1",
        "VISIT1DT",
        "RFSTDTC",
        "RFENDTC",
        "VISNUMEN",
        "RFENDT",
        "DCDECOD",
        "EOSSTT",
        "DCSREAS",
        "MMSETOT"
      ],
      "rows": 254,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "apply_conditional_format",
      "title": "Conditional reformatting of a pre-populated string of numbers",
      "topics": [
        "apply_conditional_format"
      ]
    },
    {
      "page": "apply_formats",
      "title": "Apply format strings to numeric values",
      "topics": [
        "apply_formats"
      ]
    },
    {
      "page": "apply_row_masks",
      "title": "Apply row masks to blank repeated row labels",
      "topics": [
        "apply_row_masks"
      ]
    },
    {
      "page": "as_display",
      "title": "Extract a display-ready frame from a build result",
      "topics": [
        "as_display"
      ]
    },
    {
      "page": "assoc_test",
      "title": "Association-test column(s) for count, shift, and desc layers",
      "topics": [
        "assoc_test"
      ]
    },
    {
      "page": "collapse_row_labels",
      "title": "Collapse row labels into a single column",
      "topics": [
        "collapse_row_labels"
      ]
    },
    {
      "page": "custom_group",
      "title": "Create a custom column group configuration",
      "topics": [
        "custom_group"
      ]
    },
    {
      "page": "f_str",
      "title": "Create a format string object",
      "topics": [
        "f_str"
      ]
    },
    {
      "page": "generate_row_ids",
      "title": "Generate unique row IDs for output rows",
      "topics": [
        "generate_row_ids"
      ]
    },
    {
      "page": "get_data_labels",
      "title": "Extract variable labels from a data.frame",
      "topics": [
        "get_data_labels"
      ]
    },
    {
      "page": "group_analyze",
      "title": "Create a custom analysis layer",
      "topics": [
        "group_analyze"
      ]
    },
    {
      "page": "group_count",
      "title": "Create a count layer",
      "topics": [
        "group_count"
      ]
    },
    {
      "page": "group_desc",
      "title": "Create a descriptive statistics layer",
      "topics": [
        "group_desc"
      ]
    },
    {
      "page": "group_shift",
      "title": "Create a shift layer",
      "topics": [
        "group_shift"
      ]
    },
    {
      "page": "is_pop_data",
      "title": "Check if an object is a tplyr_pop_data",
      "topics": [
        "is_pop_data"
      ]
    },
    {
      "page": "is_tplyr_layer",
      "title": "Check if an object is a tplyr_layer",
      "topics": [
        "is_tplyr_layer"
      ]
    },
    {
      "page": "is_tplyr_spec",
      "title": "Check if an object is a tplyr_spec",
      "topics": [
        "is_tplyr_spec"
      ]
    },
    {
      "page": "label",
      "title": "Create a text label for use in by parameters",
      "topics": [
        "label"
      ]
    },
    {
      "page": "layer_settings",
      "title": "Create layer settings",
      "topics": [
        "layer_settings"
      ]
    },
    {
      "page": "pop_data",
      "title": "Create a population data configuration",
      "topics": [
        "pop_data"
      ]
    },
    {
      "page": "proportion_ci",
      "title": "Confidence interval for a single binomial proportion",
      "topics": [
        "proportion_ci"
      ]
    },
    {
      "page": "replace_leading_whitespace",
      "title": "Replace leading whitespace with a specified string",
      "topics": [
        "replace_leading_whitespace"
      ]
    },
    {
      "page": "str_extract_num",
      "title": "Extract numeric values from formatted strings",
      "topics": [
        "str_extract_num"
      ]
    },
    {
      "page": "str_indent_wrap",
      "title": "Wrap strings to a specific width with hyphenation while preserving indentation",
      "topics": [
        "str_indent_wrap"
      ]
    },
    {
      "page": "total_group",
      "title": "Create a total group configuration",
      "topics": [
        "total_group"
      ]
    },
    {
      "page": "tplyr_adae",
      "title": "Adverse events analysis dataset",
      "topics": [
        "tplyr_adae"
      ]
    },
    {
      "page": "tplyr_adlb",
      "title": "Laboratory data analysis dataset",
      "topics": [
        "tplyr_adlb"
      ]
    },
    {
      "page": "tplyr_adsl",
      "title": "Subject-level analysis dataset",
      "topics": [
        "tplyr_adsl"
      ]
    },
    {
      "page": "tplyr_build",
      "title": "Build a tplyr2 table from a spec and data",
      "topics": [
        "tplyr_build"
      ]
    },
    {
      "page": "tplyr_from_ard",
      "title": "Reconstruct a formatted table from ARD and a spec",
      "topics": [
        "tplyr_from_ard"
      ]
    },
    {
      "page": "tplyr_header_n",
      "title": "Extract header N from a tplyr2 build result",
      "topics": [
        "tplyr_header_n"
      ]
    },
    {
      "page": "tplyr_layers",
      "title": "Create a list of layers",
      "topics": [
        "tplyr_layers"
      ]
    },
    {
      "page": "tplyr_meta",
      "title": "Metadata object for a tplyr output cell",
      "topics": [
        "tplyr_meta"
      ]
    },
    {
      "page": "tplyr_meta_result",
      "title": "Get metadata for a specific output cell",
      "topics": [
        "tplyr_meta_result"
      ]
    },
    {
      "page": "tplyr_meta_subset",
      "title": "Get source data rows for a specific output cell",
      "topics": [
        "tplyr_meta_subset"
      ]
    },
    {
      "page": "tplyr_numeric_data",
      "title": "Retrieve raw numeric data from a tplyr_build result",
      "topics": [
        "tplyr_numeric_data"
      ]
    },
    {
      "page": "tplyr_read_spec",
      "title": "Read a tplyr_spec from JSON or YAML",
      "topics": [
        "tplyr_read_spec"
      ]
    },
    {
      "page": "tplyr_spec",
      "title": "Create a tplyr2 table specification",
      "topics": [
        "tplyr_spec"
      ]
    },
    {
      "page": "tplyr_stats_data",
      "title": "Retrieve raw statistic values from a tplyr_build result",
      "topics": [
        "tplyr_stats_data"
      ]
    },
    {
      "page": "tplyr_to_ard",
      "title": "Convert tplyr_build output to Analysis Results Data (ARD) format",
      "topics": [
        "tplyr_to_ard"
      ]
    },
    {
      "page": "tplyr_write_spec",
      "title": "Write a tplyr_spec to JSON or YAML",
      "topics": [
        "tplyr_write_spec"
      ]
    },
    {
      "page": "tplyr2_options",
      "title": "Get or set tplyr2 package options",
      "topics": [
        "tplyr2_options"
      ]
    }
  ],
  "_readme": "https://github.com/atorus-research/tplyr2/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "data.table",
    "glue",
    "jsonlite",
    "lifecycle",
    "magrittr",
    "purrr",
    "rlang",
    "stringi",
    "stringr",
    "vctrs"
  ],
  "_vignettes": [
    {
      "source": "ard.Rmd",
      "filename": "ard.html",
      "title": "Analysis Results Data",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Converting to ARD",
        "ARD Structure",
        "Count Layer ARD",
        "Descriptive Statistics Layer ARD",
        "Reconstructing from ARD",
        "Verifying the Round-Trip",
        "Use Cases",
        "Standards-Compliant Data Exchange",
        "Separating Computation from Presentation",
        "Layer Coverage",
        "Archiving and Reproducibility",
        "Summary"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-28 16:08:49",
      "commits": 3
    },
    {
      "source": "adverse-events.Rmd",
      "filename": "adverse-events.html",
      "title": "Building an Adverse Events Table",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "The Population Principle",
        "Step 1: Incidence by System Organ Class and Preferred Term",
        "Step 2: \"Any Adverse Event\" and Subjects With No Events",
        "Step 3: A Between-Arm Comparison",
        "Step 4: A \"Most Frequent Events\" Variant, With Risk Difference",
        "Step 5: A Display-Ready Table",
        "See Also"
      ],
      "created": "2026-07-28 16:08:49",
      "modified": "2026-07-28 16:08:49",
      "commits": 1
    },
    {
      "source": "display_conventions.Rmd",
      "filename": "display_conventions.html",
      "title": "Clinical Display Conventions",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Small and Large Percentages",
        "Zero Counts",
        "Showing Only Selected Levels",
        "Missing and Total Rows",
        "One Statistic Per Column",
        "Count layers: stat_columns",
        "Descriptive layers: stats_as_columns",
        "Shift Table Denominators",
        "The denominator row",
        "Indenting and Wrapping Nested Terms",
        "Conventions a Format String Cannot Express",
        "Getting the Table Out",
        "Where to Go From Here"
      ],
      "created": "2026-07-31 19:57:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 1
    },
    {
      "source": "binding-statistics.Rmd",
      "filename": "binding-statistics.html",
      "title": "Comparative Statistics and Binding External Results",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Where statistics come from in tplyr2",
        "Native comparisons across the treatment columns",
        "Risk difference",
        "Association tests with assoc_test()",
        "Single-proportion confidence intervals",
        "Bringing your own statistics",
        "Attach a statistic as a column",
        "Attach a statistic as a row",
        "Missing or non-estimable results",
        "group_analyze() for in-spec custom statistics",
        "Handing off to a table package"
      ],
      "created": "2026-07-26 20:25:07",
      "modified": "2026-07-28 16:08:49",
      "commits": 5
    },
    {
      "source": "count.Rmd",
      "filename": "count.html",
      "title": "Count Layers",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "A Simple Count",
        "Adding a Total Column",
        "Custom Column Groups",
        "Custom Format Strings",
        "Total Rows",
        "Population Data: Getting the Denominator Right",
        "Distinct Versus Event Counts",
        "Displaying Statistics in Separate Columns",
        "A Note on Parenthesis Hugging",
        "Nested Count Summaries",
        "Collapsing Row Labels",
        "Default Mode (Stub Rows)",
        "Nest Mode",
        "Nested Counts with Total Rows",
        "Where to Go from Here"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 6
    },
    {
      "source": "analyze.Rmd",
      "filename": "analyze.html",
      "title": "Custom Analysis Layers",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "The analyze_fn Contract",
        "Format Strings Mode",
        "Multiple Statistics Per Row",
        "Pre-Formatted Mode",
        "Integration with by Variables",
        "Combining with Other Layers",
        "Error Handling",
        "Summary",
        "See Also"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-28 16:08:49",
      "commits": 3
    },
    {
      "source": "denom.Rmd",
      "filename": "denom.html",
      "title": "Denominators",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Default Behavior",
        "Controlling Denominator Grouping with denoms_by",
        "Separate Denominator Populations with denom_where",
        "Excluding Values from Denominators with denom_ignore",
        "Denominators with Distinct Counts",
        "Confidence Intervals for the Single Proportion",
        "Denominators with Population Data",
        "Missing Subjects",
        "Putting It All Together",
        "Summary",
        "See Also"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-28 16:08:49",
      "commits": 5
    },
    {
      "source": "desc.Rmd",
      "filename": "desc.html",
      "title": "Descriptive Statistics Layers",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Built-in Summaries",
        "Quantile Algorithm",
        "Custom Summaries",
        "Layer-Level Custom Summaries",
        "Session-Level Custom Summaries",
        "Overriding Built-in Summaries",
        "Multi-Variable Descriptive Statistics",
        "Records Assessed: n Versus n_records",
        "Statistics as Columns",
        "Adding a Comparison p-value",
        "Where to Go From Here"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 5
    },
    {
      "source": "format_strings.Rmd",
      "filename": "format_strings.html",
      "title": "Format Strings",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Seeing the alignment in this vignette",
        "Anatomy of a Format String",
        "Literals cannot contain x, X, a, or A",
        "Field Width and Padding",
        "Where Format Strings Go",
        "Count and shift layers: the n_counts key",
        "Descriptive statistics layers: a named list, one entry per row",
        "Analyze layers: whatever your function returns",
        "One format string per column: stat_columns",
        "Statistic Keywords by Layer Type",
        "Count and shift layers",
        "Descriptive statistics layers",
        "Rounding",
        "Missing Values and the empty Argument",
        "Formatting Numbers Outside a Layer",
        "Where to Go From Here"
      ],
      "created": "2026-07-31 19:57:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 1
    },
    {
      "source": "tplyr2.Rmd",
      "filename": "tplyr2.html",
      "title": "Getting Started with tplyr2",
      "engine": "knitr::rmarkdown",
      "headings": [
        "How tplyr2 Works",
        "The tplyr_spec() Object",
        "The tplyr_layer() Object",
        "Building a Table",
        "String Formatting in tplyr2",
        "Layer Types",
        "Descriptive Statistics Layers",
        "Multiple Target Variables",
        "Count Layers",
        "Total Rows",
        "Distinct Counting",
        "Nested Counts",
        "Shift Layers",
        "Numeric Data",
        "Where to Go from Here",
        "References"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-08-02 12:20:39",
      "commits": 6
    },
    {
      "source": "metadata.Rmd",
      "filename": "metadata.html",
      "title": "Metadata and Traceability",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why Traceability Matters",
        "Building with Metadata",
        "Row IDs",
        "Inspecting Cell Metadata",
        "Getting Source Data",
        "Metadata for Count Layers",
        "Total Rows",
        "Metadata for Descriptive Statistics Layers",
        "Where Filters in Metadata",
        "Anti-Join Metadata for Missing Subjects",
        "Stat Columns and the statistic Field",
        "Practical Applications",
        "Summary",
        "See Also"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 4
    },
    {
      "source": "migration.Rmd",
      "filename": "migration.html",
      "title": "Migrating from Tplyr v1",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Quick Reference: Function Mapping",
        "Key Differences in Detail",
        "Data Is Separated from Configuration",
        "Variable Names Are Quoted Strings",
        "Settings Are Collected in an Object",
        "Format Strings Use Quoted Variable Names",
        "Side-by-Side Examples",
        "Demographics Table",
        "Tplyr v1",
        "tplyr2",
        "Adverse Events Table (Nested Counts)",
        "New Features in tplyr2",
        "Comparative and Inferential Statistics",
        "Binding External Results and Display Helpers",
        "Multi-Column Count Layouts",
        "Spec Serialization",
        "Custom Analysis Layers",
        "Cell-Level Metadata",
        "ARD Conversion and Numeric Data",
        "Performance",
        "Overall Speedup by Layer Type",
        "Detailed Results",
        "Count Layers",
        "Nested Count Layers",
        "Descriptive Statistics Layers",
        "Shift Layers",
        "Summary"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-28 16:08:49",
      "commits": 5
    },
    {
      "source": "post_processing.Rmd",
      "filename": "post_processing.html",
      "title": "Post-Processing",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Building the Example Data",
        "Row Masks",
        "Adding Row Breaks Between Layers",
        "Collapsing Row Labels",
        "Extracting Numeric Values",
        "Conditional Formatting",
        "Replacing Leading Whitespace",
        "Standalone Format Application",
        "Text Wrapping",
        "Putting It All Together",
        "Adding Conditional Formatting to the Pipeline",
        "Collapsing In Place (Nest Mode)",
        "The Final Step: as_display()",
        "Summary"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 4
    },
    {
      "source": "precision_alignment.Rmd",
      "filename": "precision_alignment.html",
      "title": "Precision and Alignment",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Auto-Precision",
        "The +N offset",
        "precision_on: measuring a different variable",
        "precision_by: one width per group",
        "Capping Precision",
        "Supplying Precision From Outside",
        "Auto-precision is a descriptive-statistics feature",
        "Parenthesis Hugging",
        "Hugging is applied per group, not per side",
        "There must be something to hug",
        "Migrating from Tplyr v1",
        "Hugging with auto-precision",
        "Putting It Together",
        "Where to Go From Here"
      ],
      "created": "2026-07-31 19:57:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 1
    },
    {
      "source": "riskdiff.Rmd",
      "filename": "riskdiff.html",
      "title": "Risk Difference",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Basic Risk Difference",
        "Configuring Comparisons",
        "Formatting Output",
        "Confidence Interval Level",
        "Risk Difference with Distinct Counts",
        "Interaction with Special Rows",
        "Extracting Raw Numbers",
        "Risk Difference Versus Association Tests",
        "Summary",
        "Single-Level Layers Only"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 4
    },
    {
      "source": "shift.Rmd",
      "filename": "shift.html",
      "title": "Shift Layers",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "A Basic Example",
        "Filling Missing Groups Using Factors",
        "Customizing the Format",
        "Shift Denominators",
        "The Denominator Row",
        "Zero Cells and Percent Thresholds",
        "Distinct (Subject-Level) Shifts",
        "Association Tests",
        "One Thing to Note",
        "Where to Go From Here"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 3
    },
    {
      "source": "sort.Rmd",
      "filename": "sort.html",
      "title": "Sorting a tplyr2 Table",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Ordering Columns Explained",
        "Sorting Across Layers",
        "Sorting by Variable Values",
        "Factor Level Ordering",
        "VARN Companion Column Ordering",
        "Sorting Descriptive Statistics",
        "Sorting Count Layers",
        "Sorting by Count",
        "Nested Count Sorting",
        "Sorting Preferred Terms by Frequency",
        "Practical Example: Preparing a Final Table"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 4
    },
    {
      "source": "serialization.Rmd",
      "filename": "serialization.html",
      "title": "Spec Serialization",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Writing a Spec to JSON",
        "Reading a Spec Back",
        "YAML Format",
        "What Gets Serialized",
        "Expressions",
        "Format Strings",
        "Labels in by",
        "Functions",
        "Layer Settings",
        "Examining the Serialized Output",
        "A More Complex Example",
        "Use Cases",
        "Version-Controlled Table Definitions",
        "Sharing Across Teams",
        "Applying a Spec to Different Data",
        "Regulatory Archival",
        "See Also"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-28 16:08:49",
      "commits": 3
    },
    {
      "source": "table.Rmd",
      "filename": "table.html",
      "title": "Table Properties",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Column Variables",
        "Multiple Column Variables",
        "Table-Level Filtering with where",
        "Treatment Groups",
        "Total Groups",
        "Custom Groups",
        "Combining Total and Custom Groups",
        "Population Data",
        "Extracting Header N",
        "Population Data with Filters",
        "Data Completion",
        "Limiting Completion with limit_data_by",
        "Where to Go From Here"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 4
    },
    {
      "source": "options.Rmd",
      "filename": "options.html",
      "title": "tplyr2 Options",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Viewing Current Options",
        "IBM Rounding",
        "Quantile Algorithm",
        "Precision Cap",
        "Custom Summaries",
        "Scientific Notation Control",
        "Reading Variable Labels",
        "Resetting Options",
        "See Also"
      ],
      "created": "2026-02-15 21:41:01",
      "modified": "2026-07-31 19:57:01",
      "commits": 4
    }
  ],
  "_score": 7.183269843682805,
  "_indexed": true,
  "_nocasepkg": "tplyr2",
  "_universes": [
    "atorus-research",
    "mstackhouse"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-10-11T10:04:05.000Z",
      "distro": "resolute",
      "commit": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
      "fileid": "https://r2.ropensci.org/d11efbff4f411f4aa1a97deb401c94056c18a38880fc8b4046662290af5065dc",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/atorus-research/actions/runs/38130299459"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-10-11T10:04:09.000Z",
      "distro": "resolute",
      "commit": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
      "fileid": "https://r2.ropensci.org/09dafbbded0bec0e635b524815921cee735c650e2a64c81eb8aac42d1b277868",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/atorus-research/actions/runs/38130299459"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-10-11T10:15:14.000Z",
      "commit": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
      "fileid": "https://r2.ropensci.org/b526b07f3ca851530cc4aad81ac6710bbff28e7fa2ea508a6afc4c2c24e3793f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/atorus-research/actions/runs/38130299459"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-10-11T10:16:03.000Z",
      "commit": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
      "fileid": "https://r2.ropensci.org/7f0b2ec5097996203d20ad882513d0abc525c95c670ce66ac95667a4b8271a19",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/atorus-research/actions/runs/38130299459"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0",
      "date": "2026-10-11T10:04:05.000Z",
      "commit": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
      "fileid": "https://r2.ropensci.org/140f39eb72112c9717856432aa58fc239dfb3dde25ec4e3470e43566bcd0c06d",
      "status": "success",
      "buildurl": "https://github.com/r-universe/atorus-research/actions/runs/38130299459"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-10-11T10:03:26.000Z",
      "commit": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
      "fileid": "https://r2.ropensci.org/ca8d3e8051e62e48e73897d37e7327cf9f905729283f791d04d6c116c284a5c4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/atorus-research/actions/runs/38130299459"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-10-11T10:03:39.000Z",
      "commit": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
      "fileid": "https://r2.ropensci.org/82f8670e1b8e4705653fabb3459e93818253f081447ca141c21c7fc518358f02",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/atorus-research/actions/runs/38130299459"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-10-11T10:03:26.000Z",
      "commit": "9f04a58c7e629bb461e7a37c59af8a49a427b854",
      "fileid": "https://r2.ropensci.org/4acfeee772d0323e24d54dc13db341907d9d2fea6e755fb7bb660ac7ef86c0e6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/atorus-research/actions/runs/38130299459"
    }
  ]
}