{
  "_id": "6ad1e18f0edca5be250224bf",
  "Package": "osutils",
  "Title": "Useful Functions for OpenSAFELY",
  "Version": "0.0.0.9000",
  "Authors@R": "c(\nperson(\"William\", \"Hulme\", , \"william.hulme@phc.ox.ac.uk\", role = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-9162-4999\")),\nperson(\"Tom\", \"Palmer\", , \"remlapmot@hotmail.com\", role = \"aut\",\ncomment = c(ORCID = \"0000-0003-4655-4511\"))\n)",
  "Description": "Contains functions that are often needed when using the\nOpenSAFELY platform <https://www.opensafely.org/>, such as\nredaction and low-memory processing.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/wjchulme/osutils,\nhttps://opensafely-core.r-universe.dev/osutils",
  "BugReports": "https://github.com/wjchulme/osutils/issues/",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.2.1",
  "Config/pak/sysreqs": "cmake make libicu-dev libuv1-dev libxml2-dev\nlibssl-dev libnode-dev libx11-dev",
  "Repository": "https://opensafely-core.r-universe.dev",
  "Date/Publication": "2024-12-18 15:38:40 UTC",
  "RemoteUrl": "https://github.com/wjchulme/osutils",
  "RemoteRef": "HEAD",
  "RemoteSha": "7ef65dd46b75043fb4523e51105e27278d011d58",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-16 07:47:12 UTC",
    "User": "root"
  },
  "Author": "William Hulme [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-9162-4999>),\nTom Palmer [aut] (ORCID: <https://orcid.org/0000-0003-4655-4511>)",
  "Maintainer": "William Hulme <william.hulme@phc.ox.ac.uk>",
  "_user": "opensafely-core",
  "_type": "src",
  "_file": "osutils_0.0.0.9000.tar.gz",
  "_fileid": "https://r2.ropensci.org/bc50f06fe89ea20bfa95ee2716f340a4c5e93d535be32e3883d97995c4141733",
  "_filesize": 159962,
  "_sha256": "bc50f06fe89ea20bfa95ee2716f340a4c5e93d535be32e3883d97995c4141733",
  "_expires": "2027-01-24T08:34:22.000Z",
  "_created": "2026-10-16T07:47:12.000Z",
  "_published": "2026-10-16T08:34:23.662Z",
  "_buildurl": "https://github.com/r-universe/opensafely-core/actions/runs/38869067887",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 116869863255,
      "time": 123,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "NOTE",
      "artifact": "12032214426"
    },
    {
      "job": 116869863254,
      "time": 122,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "NOTE",
      "artifact": "12032408607"
    },
    {
      "job": 116869863098,
      "time": 104,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "12034847324"
    },
    {
      "job": 116869863146,
      "time": 110,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "NOTE",
      "artifact": "12034188018"
    },
    {
      "job": 116868733956,
      "time": 199,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12032213989"
    },
    {
      "job": 116869863385,
      "time": 119,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12032986061"
    },
    {
      "job": 116869863253,
      "time": 71,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "NOTE",
      "artifact": "12032770829"
    },
    {
      "job": 116869863248,
      "time": 68,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "12032506483"
    },
    {
      "job": 116869863196,
      "time": 121,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "NOTE",
      "artifact": "12032841246"
    }
  ],
  "_upstream": "https://github.com/wjchulme/osutils",
  "_commit": {
    "id": "7ef65dd46b75043fb4523e51105e27278d011d58",
    "author": "Will Hulme <25637345+wjchulme@users.noreply.github.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Merge pull request #4 from remlapmot/add-runiverse-url\n\nAdd r-universe URL to allow osutils to show in opensafely-core.r-universe.dev search",
    "time": 1734536320
  },
  "_maintainer": {
    "name": "William Hulme",
    "email": "william.hulme@phc.ox.ac.uk",
    "orcid": "0000-0002-9162-4999"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "broom",
      "role": "Imports"
    },
    {
      "package": "data.table",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "forcats",
      "role": "Imports"
    },
    {
      "package": "fs",
      "role": "Imports"
    },
    {
      "package": "gt",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "role": "Imports"
    },
    {
      "package": "lifecycle",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "plyr",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "readr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "tidyselect",
      "role": "Imports"
    },
    {
      "package": "yaml",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "wjchulme",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [],
  "_tags": [],
  "_stars": 0,
  "_contributors": [
    {
      "user": "remlapmot",
      "count": 39,
      "uuid": 3777473
    },
    {
      "user": "wjchulme",
      "count": 17,
      "uuid": 25637345
    }
  ],
  "_userbio": {
    "uuid": 77844139,
    "type": "organization",
    "name": "OpenSAFELY Core",
    "followers": 59,
    "description": "The code that runs the OpenSAFELY platform"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/osutils"
  },
  "_devurl": "https://github.com/wjchulme/osutils",
  "_searchresults": 1,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/osutils.html",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "%>%",
    "action_names_to_txt",
    "c_action",
    "gt_cat",
    "gt_catcat",
    "gt_catnum",
    "gt_num",
    "pipeline_action",
    "pipeline_comment",
    "pipeline_list",
    "project_list_to_yaml",
    "readtype_csv",
    "readtype_delim",
    "redact_tblsummary",
    "redacted_summary_cat",
    "redacted_summary_catcat",
    "redacted_summary_catnum",
    "redacted_summary_date",
    "redacted_summary_num",
    "redactor",
    "redactor2",
    "reformat_codelists",
    "round_km",
    "sample_nonoutcomes_n",
    "sample_nonoutcomes_prop",
    "sample_random_n",
    "sample_random_prop",
    "sample_weights",
    "writetype_csv",
    "writetype_delim"
  ],
  "_help": [
    {
      "page": "action_names_to_txt",
      "title": "Put action names in a txt file --",
      "topics": [
        "action_names_to_txt"
      ]
    },
    {
      "page": "c_action",
      "title": "Create comment object",
      "topics": [
        "c_action"
      ]
    },
    {
      "page": "gt_cat",
      "title": "Convert output of categorical tabulation (redacted_summary_cat) to gt object",
      "topics": [
        "gt_cat"
      ]
    },
    {
      "page": "gt_catcat",
      "title": "Convert output of categorical cross-tabulation (redacted_summary_catcat) to gt object",
      "topics": [
        "gt_catcat"
      ]
    },
    {
      "page": "gt_catnum",
      "title": "Convert output of categorical-numeric cross-tabulation (redacted_summary_catnum) to gt object",
      "topics": [
        "gt_catnum"
      ]
    },
    {
      "page": "gt_num",
      "title": "Convert output of numeric tabulation (redact_summary_num) to gt object",
      "topics": [
        "gt_num"
      ]
    },
    {
      "page": "pipeline_action",
      "title": "Create action object",
      "topics": [
        "pipeline_action"
      ]
    },
    {
      "page": "pipeline_comment",
      "title": "Create comment object",
      "topics": [
        "pipeline_comment"
      ]
    },
    {
      "page": "pipeline_list",
      "title": "Create entire pipeline list",
      "topics": [
        "pipeline_list"
      ]
    },
    {
      "page": "project_list_to_yaml",
      "title": "Convert list to yaml and save",
      "topics": [
        "project_list_to_yaml"
      ]
    },
    {
      "page": "readtype_csv",
      "title": "Read a csv file into a tibble, and type columns using a separate json file.",
      "topics": [
        "readtype_csv"
      ]
    },
    {
      "page": "readtype_delim",
      "title": "Read a delimited file (including CSV and TSV) into a tibble, and type columns using a separate json file",
      "topics": [
        "readtype_delim"
      ]
    },
    {
      "page": "redact_tblsummary",
      "title": "Redact tbl_summary object",
      "topics": [
        "redact_tblsummary"
      ]
    },
    {
      "page": "redacted_summary_cat",
      "title": "Summarise a categorical variable and redact if necessary",
      "topics": [
        "redacted_summary_cat"
      ]
    },
    {
      "page": "redacted_summary_catcat",
      "title": "Categorical by categorical cross-tabulation, with redaction if necessary",
      "topics": [
        "redacted_summary_catcat"
      ]
    },
    {
      "page": "redacted_summary_catnum",
      "title": "Categorical by numeric cross-tabulation, with redaction if necessary",
      "topics": [
        "redacted_summary_catnum"
      ]
    },
    {
      "page": "redacted_summary_date",
      "title": "Redact a date vector",
      "topics": [
        "redacted_summary_date"
      ]
    },
    {
      "page": "redacted_summary_num",
      "title": "Summarise a numeric vector and redact if necessary",
      "topics": [
        "redacted_summary_num"
      ]
    },
    {
      "page": "redactor",
      "title": "Indicates which values to redact from a vector of frequencies",
      "topics": [
        "redactor"
      ]
    },
    {
      "page": "redactor2",
      "title": "Redact values in a vector based on frequency values",
      "topics": [
        "redactor2"
      ]
    },
    {
      "page": "reformat_codelists",
      "title": "Converts a json file of codelist names and URLs into an HTML table",
      "topics": [
        "reformat_codelists"
      ]
    },
    {
      "page": "round_km",
      "title": "Rounded Kaplan-Meier curves",
      "topics": [
        "round_km"
      ]
    },
    {
      "page": "sample_nonoutcomes_n",
      "title": "Sample patients (or other observational units) based on patient IDs, depending on occurrence of an event or not",
      "topics": [
        "sample_nonoutcomes_n"
      ]
    },
    {
      "page": "sample_nonoutcomes_prop",
      "title": "Sample patients (or other observational units) based on patient IDs, depending on occurrence of an event or not",
      "topics": [
        "sample_nonoutcomes_prop"
      ]
    },
    {
      "page": "sample_random_n",
      "title": "Sample n patients (or other observational units) based on patient IDs.",
      "topics": [
        "sample_random_n"
      ]
    },
    {
      "page": "sample_random_prop",
      "title": "Sample a proportion of patients (or other observational units) based on patient IDs",
      "topics": [
        "sample_random_prop"
      ]
    },
    {
      "page": "sample_weights",
      "title": "Derive sampling probabilities",
      "topics": [
        "sample_weights"
      ]
    },
    {
      "page": "writetype_csv",
      "title": "Write a data frame to a csv file, and save typing information in a separate json file",
      "topics": [
        "writetype_csv"
      ]
    },
    {
      "page": "writetype_delim",
      "title": "Write a data frame to a delimited file, and save typing information in a separate json file",
      "topics": [
        "writetype_delim"
      ]
    }
  ],
  "_readme": "https://github.com/wjchulme/osutils/raw/HEAD/README.md",
  "_rundeps": [
    "backports",
    "base64enc",
    "bigD",
    "bit",
    "bit64",
    "bitops",
    "broom",
    "bslib",
    "cachem",
    "cli",
    "clipr",
    "commonmark",
    "cpp11",
    "crayon",
    "curl",
    "data.table",
    "digest",
    "dplyr",
    "evaluate",
    "farver",
    "fastmap",
    "fontawesome",
    "forcats",
    "fs",
    "generics",
    "glue",
    "gt",
    "highr",
    "hms",
    "htmltools",
    "htmlwidgets",
    "jquerylib",
    "jsonlite",
    "juicyjuice",
    "knitr",
    "labeling",
    "lifecycle",
    "litedown",
    "magrittr",
    "markdown",
    "memoise",
    "mime",
    "pillar",
    "pkgconfig",
    "plyr",
    "prettyunits",
    "progress",
    "purrr",
    "R6",
    "rappdirs",
    "RColorBrewer",
    "Rcpp",
    "reactable",
    "reactR",
    "readr",
    "rlang",
    "rmarkdown",
    "sass",
    "scales",
    "stringi",
    "stringr",
    "tibble",
    "tidyr",
    "tidyselect",
    "tinytex",
    "tzdb",
    "utf8",
    "V8",
    "vctrs",
    "viridisLite",
    "vroom",
    "withr",
    "xfun",
    "xml2",
    "yaml"
  ],
  "_score": 1.6989700043360187,
  "_indexed": true,
  "_nocasepkg": "osutils",
  "_universes": [
    "opensafely-core",
    "wjchulme"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.0.0.9000",
      "date": "2026-10-16T07:49:27.000Z",
      "distro": "resolute",
      "commit": "7ef65dd46b75043fb4523e51105e27278d011d58",
      "fileid": "https://r2.ropensci.org/e0d952557633ad32bdf295f9986de9b80ccc98a98db036021515097ef1c7c2c8",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/opensafely-core/actions/runs/38869067887"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.0.0.9000",
      "date": "2026-10-16T07:49:26.000Z",
      "distro": "resolute",
      "commit": "7ef65dd46b75043fb4523e51105e27278d011d58",
      "fileid": "https://r2.ropensci.org/dddb25a3669f0447357c183437565805f4c1423967a640e00ccd9f9ff2338a9b",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/opensafely-core/actions/runs/38869067887"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.0.0.9000",
      "date": "2026-10-16T08:31:15.000Z",
      "commit": "7ef65dd46b75043fb4523e51105e27278d011d58",
      "fileid": "https://r2.ropensci.org/5b9708d6a16addf99a6c6c0aca30460440ab377ebfdccd0bb1ccabfe71eefae0",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/opensafely-core/actions/runs/38869067887"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.0.0.9000",
      "date": "2026-10-16T08:33:36.000Z",
      "commit": "7ef65dd46b75043fb4523e51105e27278d011d58",
      "fileid": "https://r2.ropensci.org/5cbc1aeec3ab581310796df5d70658c26e152c40ea6c57c9328f6b135e39a91e",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/opensafely-core/actions/runs/38869067887"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.0.0.9000",
      "date": "2026-10-16T07:49:34.000Z",
      "commit": "7ef65dd46b75043fb4523e51105e27278d011d58",
      "fileid": "https://r2.ropensci.org/f7c078d3a5f0a6a3826113b47ceeda8ba90b5906de40e2407c3c08fd534c2a4a",
      "status": "success",
      "buildurl": "https://github.com/r-universe/opensafely-core/actions/runs/38869067887"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.0.0.9000",
      "date": "2026-10-16T07:48:28.000Z",
      "commit": "7ef65dd46b75043fb4523e51105e27278d011d58",
      "fileid": "https://r2.ropensci.org/53ef08d17c419824fedd479965c5f0012153701465c87b44381dcb44e699ff02",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/opensafely-core/actions/runs/38869067887"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.0.0.9000",
      "date": "2026-10-16T07:48:26.000Z",
      "commit": "7ef65dd46b75043fb4523e51105e27278d011d58",
      "fileid": "https://r2.ropensci.org/9b59e0244f45c4de0945296d9fc38a5ad042aef0aa20ae65bb18855cf801f513",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/opensafely-core/actions/runs/38869067887"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.0.0.9000",
      "date": "2026-10-16T07:49:21.000Z",
      "commit": "7ef65dd46b75043fb4523e51105e27278d011d58",
      "fileid": "https://r2.ropensci.org/c9e3d79d1991c7f3edcf8851826e8ec5730bef4a0a36a9e55385077dafca27fa",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/opensafely-core/actions/runs/38869067887"
    }
  ]
}