{
  "_id": "6a21d1d6cd65a98ecbd3f08f",
  "Package": "ksformat",
  "Type": "Package",
  "Title": "'SAS'-Style 'PROC FORMAT' for R",
  "Version": "0.8.1",
  "Author": "Vladimir Larchenko [aut, cre], Igor Aleschenkov [aut]",
  "Maintainer": "Vladimir Larchenko\n<vladimir.larchenko@keystatsolutions.com>",
  "Authors@R": "c(\nperson(\n\"Vladimir\", \"Larchenko\",\nemail = \"vladimir.larchenko@keystatsolutions.com\",\nrole = c(\"aut\", \"cre\")\n),\nperson(\n\"Igor\", \"Aleschenkov\",\nemail = \"igor.aleschenkov@keystatsolutions.com\",\nrole = \"aut\"\n)\n)",
  "Description": "Provides 'SAS' 'PROC FORMAT'-like functionality for\ncreating and applying value formats in R. Supports discrete and\nrange-based mapping of values to labels, reverse formatting\n(invalue), date/time/datetime formatting with built-in 'SAS'\nformat names, multi-label formats, expression labels evaluated\nat apply-time, case-insensitive matching, import/export of\nformat definitions, and proper handling of missing values (NA,\nNULL, NaN).",
  "URL": "https://github.com/crow16384/ksformat",
  "BugReports": "https://github.com/crow16384/ksformat/issues",
  "License": "GPL-3",
  "Encoding": "UTF-8",
  "VignetteBuilder": "knitr",
  "Config/roxygen2/version": "8.0.0",
  "Repository": "https://crow16384.r-universe.dev",
  "Date/Publication": "2026-06-04 17:01:47 UTC",
  "RemoteUrl": "https://github.com/crow16384/ksformat",
  "RemoteRef": "HEAD",
  "RemoteSha": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-06-04 19:25:37 UTC",
    "User": "root"
  },
  "MD5sum": "649414d1f0b59f5bbf45476faabbc6a4",
  "_user": "crow16384",
  "_type": "src",
  "_file": "ksformat_0.8.1.tar.gz",
  "_fileid": "be116bb1ff872b92661d2cb4e24c79208171bc1013abae78ca62dbc7b9c8a5b8",
  "_filesize": 382704,
  "_sha256": "be116bb1ff872b92661d2cb4e24c79208171bc1013abae78ca62dbc7b9c8a5b8",
  "_created": "2026-06-04T19:25:37.000Z",
  "_published": "2026-06-04T19:28:22.824Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79597638699,
      "time": 131,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7421024142"
    },
    {
      "job": 79597638732,
      "time": 128,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7421022826"
    },
    {
      "job": 79597638708,
      "time": 88,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7421007109"
    },
    {
      "job": 79597638737,
      "time": 116,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7421018344"
    },
    {
      "job": 79597080467,
      "time": 189,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7420976689"
    },
    {
      "job": 79597638741,
      "time": 108,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7421015956"
    },
    {
      "job": 79597638725,
      "time": 87,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7421008347"
    },
    {
      "job": 79597638748,
      "time": 82,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7421006677"
    },
    {
      "job": 79597638720,
      "time": 86,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7421007852"
    }
  ],
  "_buildurl": "https://github.com/r-universe/crow16384/actions/runs/26974233226",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/crow16384/ksformat",
  "_commit": {
    "id": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
    "author": "Vladimir Larchenko <vladimir.larchenko@keystatsolutions.com>",
    "committer": "Vladimir Larchenko <vladimir.larchenko@keystatsolutions.com>",
    "message": "Fix vignette dependencies for dplyr and tidyr\n",
    "time": 1780592507
  },
  "_maintainer": {
    "name": "Vladimir Larchenko",
    "email": "vladimir.larchenko@keystatsolutions.com",
    "login": "xakomowe",
    "description": "",
    "uuid": 248909102
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "shiny",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "tidyr",
      "role": "Suggests"
    }
  ],
  "_owner": "crow16384",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-07",
      "n": 16
    },
    {
      "week": "2026-08",
      "n": 1
    },
    {
      "week": "2026-12",
      "n": 8
    },
    {
      "week": "2026-13",
      "n": 19
    },
    {
      "week": "2026-14",
      "n": 6
    },
    {
      "week": "2026-15",
      "n": 1
    },
    {
      "week": "2026-16",
      "n": 9
    },
    {
      "week": "2026-17",
      "n": 2
    },
    {
      "week": "2026-18",
      "n": 2
    },
    {
      "week": "2026-19",
      "n": 1
    },
    {
      "week": "2026-20",
      "n": 11
    },
    {
      "week": "2026-21",
      "n": 2
    },
    {
      "week": "2026-22",
      "n": 2
    },
    {
      "week": "2026-23",
      "n": 2
    }
  ],
  "_tags": [],
  "_stars": 0,
  "_contributors": [
    {
      "user": "xakomowe",
      "count": 49,
      "uuid": 248909102
    },
    {
      "user": "crow16384",
      "count": 32,
      "uuid": 115039243
    },
    {
      "user": "al-garik",
      "count": 1,
      "uuid": 248288395
    }
  ],
  "_userbio": {
    "uuid": 115039243,
    "type": "user",
    "name": "crow16384"
  },
  "_downloads": {
    "count": 492,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ksformat"
  },
  "_devurl": "https://github.com/crow16384/ksformat",
  "_searchresults": 6,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/ksformat.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/crow16384/ksformat",
  "_realowner": "crow16384",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.3.5",
      "date": "2026-03-25"
    },
    {
      "version": "0.4.2",
      "date": "2026-03-28"
    },
    {
      "version": "0.7.1",
      "date": "2026-05-21"
    }
  ],
  "_exports": [
    "e",
    "fclear",
    "fexport",
    "fimport",
    "finput",
    "finputc",
    "finputk",
    "finputn",
    "flist",
    "fmap",
    "fmap_ranges",
    "fmap_strata",
    "fmap_to_ranges",
    "fnew",
    "fnew_bid",
    "fnew_date",
    "format_get",
    "format_library_app",
    "fparse",
    "fprint",
    "fput",
    "fput_all",
    "fput_df",
    "fputc",
    "fputk",
    "fputn",
    "franges",
    "is_missing",
    "ksformat_cheatsheet",
    "range_spec"
  ],
  "_help": [
    {
      "page": "ksformat-package",
      "title": "ksformat: 'SAS'-Style 'PROC FORMAT' for R",
      "topics": [
        "ksformat-package",
        "ksformat"
      ]
    },
    {
      "page": "e",
      "title": "Mark a Label for Expression Evaluation",
      "topics": [
        "e"
      ]
    },
    {
      "page": "fclear",
      "title": "Remove Format(s) from Library",
      "topics": [
        "fclear"
      ]
    },
    {
      "page": "fexport",
      "title": "Export Formats to 'SAS'-like Text",
      "topics": [
        "fexport"
      ]
    },
    {
      "page": "fimport",
      "title": "Import Formats from 'SAS' PROC FORMAT CNTLOUT CSV",
      "topics": [
        "fimport"
      ]
    },
    {
      "page": "finput",
      "title": "Create Invalue Format (Reverse Formatting like 'SAS' INVALUE)",
      "topics": [
        "finput"
      ]
    },
    {
      "page": "finputc",
      "title": "Apply Character Invalue by Name (like 'SAS' INPUTC)",
      "topics": [
        "finputc"
      ]
    },
    {
      "page": "finputk",
      "title": "Apply Invalue Using a Composite Label",
      "topics": [
        "finputk"
      ]
    },
    {
      "page": "finputn",
      "title": "Apply Numeric Invalue by Name (like 'SAS' INPUTN)",
      "topics": [
        "finputn"
      ]
    },
    {
      "page": "flist",
      "title": "List Format Names from Library",
      "topics": [
        "flist"
      ]
    },
    {
      "page": "fmap",
      "title": "Create a Key-Value Mapping for Format Creation",
      "topics": [
        "fmap"
      ]
    },
    {
      "page": "fmap_ranges",
      "title": "Build a Vector of Range Mappings",
      "topics": [
        "fmap_ranges"
      ]
    },
    {
      "page": "fmap_strata",
      "title": "Build a Vector of Stratified Range Mappings",
      "topics": [
        "fmap_strata"
      ]
    },
    {
      "page": "fmap_to_ranges",
      "title": "Reverse-Lookup Range Bounds from Labels",
      "topics": [
        "fmap_to_ranges"
      ]
    },
    {
      "page": "fnew",
      "title": "Create a Format Definition (like 'SAS' PROC FORMAT)",
      "topics": [
        "fnew"
      ]
    },
    {
      "page": "fnew_bid",
      "title": "Create Bidirectional Format",
      "topics": [
        "fnew_bid"
      ]
    },
    {
      "page": "fnew_date",
      "title": "Create Date/Time Format",
      "topics": [
        "fnew_date"
      ]
    },
    {
      "page": "format_get",
      "title": "Retrieve a Format from the Library",
      "topics": [
        "format_get"
      ]
    },
    {
      "page": "format_library_app",
      "title": "Launch Shiny Browser for Format Library",
      "topics": [
        "format_library_app"
      ]
    },
    {
      "page": "fparse",
      "title": "Parse Format Definitions from 'SAS'-like Text",
      "topics": [
        "fparse"
      ]
    },
    {
      "page": "fprint",
      "title": "Print Format(s) from Library",
      "topics": [
        "fprint"
      ]
    },
    {
      "page": "fput",
      "title": "Apply Format to Data (like 'SAS' PUT function)",
      "topics": [
        "fput"
      ]
    },
    {
      "page": "fput_all",
      "title": "Apply Format and Return All Matches (Multilabel)",
      "topics": [
        "fput_all"
      ]
    },
    {
      "page": "fput_df",
      "title": "Apply Format to Data Frame Columns",
      "topics": [
        "fput_df"
      ]
    },
    {
      "page": "fputc",
      "title": "Apply Character Format by Name (like 'SAS' PUTC)",
      "topics": [
        "fputc"
      ]
    },
    {
      "page": "fputk",
      "title": "Apply Format Using a Composite Key",
      "topics": [
        "fputk"
      ]
    },
    {
      "page": "fputn",
      "title": "Apply Numeric Format by Name (like 'SAS' PUTN)",
      "topics": [
        "fputn"
      ]
    },
    {
      "page": "franges",
      "title": "Extract Range Entries from a Format",
      "topics": [
        "franges"
      ]
    },
    {
      "page": "is_missing",
      "title": "Check if Value is Missing",
      "topics": [
        "is_missing"
      ]
    },
    {
      "page": "ksformat_cheatsheet",
      "title": "Open the ksformat cheat sheet",
      "topics": [
        "ksformat_cheatsheet"
      ]
    },
    {
      "page": "print.ks_format",
      "title": "Print Format Object",
      "topics": [
        "print.ks_format"
      ]
    },
    {
      "page": "print.ks_invalue",
      "title": "Print Invalue Object",
      "topics": [
        "print.ks_invalue"
      ]
    },
    {
      "page": "range_spec",
      "title": "Create Range Specification",
      "topics": [
        "range_spec"
      ]
    }
  ],
  "_pkglogo": "https://github.com/crow16384/ksformat/raw/HEAD/man/figures/logo.svg",
  "_readme": "https://github.com/crow16384/ksformat/raw/HEAD/README.md",
  "_rundeps": [
    "cli"
  ],
  "_vignettes": [
    {
      "source": "usage_examples.Rmd",
      "filename": "usage_examples.html",
      "title": "ksformat Usage Examples",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Example 1: Basic Discrete Formatting",
        "Example 2: Numeric Range Formatting",
        "Example 3: Decimal Ranges (BMI Categories)",
        "Example 4: Exclusive/Inclusive Bounds",
        "Example 5: Reverse Formatting with Invalue",
        "Example 6: Bidirectional Formatting",
        "Example 7: Parse Multiple Formats from Text",
        "Example 8: Export Formats Back to Text",
        "Example 9: SAS-like PUT/INPUT Functions",
        "Example 10: Data Frame Formatting",
        "Example 11: Missing Value Handling",
        "Example 12: Date/Time Formats (SAS-style)",
        "SAS Date Formats",
        "R Numeric Dates (Days Since 1970-01-01)",
        "Time Formats",
        "Datetime Formats",
        "Custom Date Formats with fnew_date()",
        "Date Formats in Data Frames",
        "Parse Date Formats from Text",
        "Example 13: Multilabel Formats",
        "Overlapping Age Categories",
        "Multilabel with Missing Values",
        "Parse Multilabel from Text",
        "Multilabel Export",
        "Practical Example: Adverse Event Severity Grading",
        "Example 14: Case-Insensitive Matching",
        "Example 15: Expression Labels in Formats",
        "Simple sprintf Expression",
        "Two Extra Arguments (.x1, .x2)",
        "ifelse Expression",
        "Mixed Static and Expression Labels",
        "Expression in .other Fallback",
        "Scalar Recycling",
        "Statistical Table Format with Computed Labels",
        "Example 16: Vectorized Format Names (SAS PUTC-style)",
        "Example 17: Working with Dates and Formats — PUTN",
        "Example 18: Import SAS Formats from CNTLOUT CSV",
        "Use Imported Formats",
        "Apply to Data Frame",
        "Export Imported Format",
        "Selective Import (No Auto-register)",
        "Example 19: Bilingual Format",
        "Example 20: Composite Key Lookup with fputk()",
        "Character lookup (returns character strings)",
        "Native Date lookup (returns Date objects)",
        "Example 21: Consistent Data-Driven Formats with fmap()",
        "Clinical-data example",
        "Same fmap(keys, values) pattern for both types",
        "When to use the default (reversal on)",
        "Summary",
        "Example 22: Date Lookup via fparse() and fputk()",
        "Character date lookup",
        "Native Date lookup",
        "Round-trip: export and re-import",
        "Example 23: Inspecting Range Rules with franges()",
        "Completing a Summary Against Format Labels",
        "Getting Unique Labels from a Format",
        "Example 24: Reverse Range Lookup with fmap_to_ranges()",
        "Example 25: Date Range Bucketing",
        "Fiscal-year bucketing",
        "Define from text with fparse()",
        "LOW / HIGH open-ended bounds",
        "Export and roundtrip",
        "Overlapping buckets with multilabel and fput_all()",
        "Auto-detection of type",
        "Datetime range bucketing",
        "Example 26: Stratified Range Lookup with fputk()",
        "Programmatic construction with fmap_strata()",
        "Text definition with fparse()",
        "Date subtype: per-subject windows",
        "Roundtrip via fexport() / fparse()",
        "Example 27: Plain Range Lookup with fmap_ranges()",
        "Example 28: Composite Key Lookup with NA Components (na_as_string)",
        "Clinical example — LB parameter derivation",
        "The rule of thumb",
        "Example 29: Composite Label Invalue Lookup with finputk()",
        "Basic usage",
        "With NA components (na_as_string = TRUE)"
      ],
      "created": "2026-02-18 07:16:20",
      "modified": "2026-06-04 08:49:46",
      "commits": 19
    }
  ],
  "_score": 5.146128035678238,
  "_indexed": true,
  "_nocasepkg": "ksformat",
  "_universes": [
    "crow16384",
    "xakomowe"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.8.1",
      "date": "2026-06-04T19:27:45.000Z",
      "distro": "noble",
      "commit": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
      "fileid": "e50a97b221212ed2c311297b82c4f5b78bd53bdc514a80d299c4fe9cc9dacfb1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/26974233226"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.8.1",
      "date": "2026-06-04T19:27:42.000Z",
      "distro": "noble",
      "commit": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
      "fileid": "fed4e1d8b06e3fa60c72486489f31d2c10fdd7d7dbbee14a25134b74c15c9993",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/26974233226"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.8.1",
      "date": "2026-06-04T19:27:04.000Z",
      "commit": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
      "fileid": "00b61d11f710ef84f0690b5a1f0f2337b1f74c9b6129ae979ba11634c9e3ce2b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/26974233226"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.8.1",
      "date": "2026-06-04T19:27:29.000Z",
      "commit": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
      "fileid": "16ba4229d55de829eaf39089ca82410bd55a5a2eee7e4472744d22893b11f76f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/26974233226"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.8.1",
      "date": "2026-06-04T19:27:43.000Z",
      "commit": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
      "fileid": "5c19f110e18fddc6f51815a827c7a3bcd718ded24de7c136a6ca07443df915f3",
      "status": "success",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/26974233226"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.8.1",
      "date": "2026-06-04T19:26:51.000Z",
      "commit": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
      "fileid": "52c0fb9fbb9e365c77426da2d397f0b4b5348fb53fad269ab79b6072c09ab401",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/26974233226"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.8.1",
      "date": "2026-06-04T19:26:47.000Z",
      "commit": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
      "fileid": "ad79d390b3f89cde93c0d16592bfaff1e583ce6111e64378f148b5353edc5614",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/26974233226"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.8.1",
      "date": "2026-06-04T19:26:47.000Z",
      "commit": "59fbf3490cc6dc3f3b09a94f014fc2e8391e1dde",
      "fileid": "7016c9b064d430eef24169a798a05411ff07969754d3197bdf14f2da7b464143",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/crow16384/actions/runs/26974233226"
    }
  ]
}