{
  "_id": "6a1d5ceb1d7bb097a0a48a7a",
  "Package": "rmweather",
  "Type": "Package",
  "Title": "Tools to Conduct Meteorological Normalisation and Counterfactual\nModelling for Air Quality Data",
  "Version": "0.2.64",
  "Date": "2025-12-03",
  "Authors@R": "person(\"Stuart K.\", \"Grange\", email = \"s.k.grange@gmail.com\", \nrole = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0003-4093-3596\"))",
  "Maintainer": "Stuart K. Grange <s.k.grange@gmail.com>",
  "Description": "An integrated set of tools to allow data users to conduct\nmeteorological normalisation and counterfactual modelling for\nair quality data. The meteorological normalisation technique\nuses predictive random forest models to remove variation of\npollutant concentrations so trends and interventions can be\nexplored in a robust way. For examples, see Grange et al.\n(2018) <doi:10.5194/acp-18-6223-2018> and Grange and Carslaw\n(2019) <doi:10.1016/j.scitotenv.2018.10.344>. The random forest\nmodels can also be used for counterfactual or business as usual\n(BAU) modelling by using the models to predict, from the\nmodel's perspective, the future. For an example, see Grange et\nal. (2021) <doi:10.5194/acp-2020-1171>.",
  "URL": "https://github.com/skgrange/rmweather",
  "BugReports": "https://github.com/skgrange/rmweather/issues",
  "License": "GPL-3 | file LICENSE",
  "ByteCompile": "true",
  "Encoding": "UTF-8",
  "LazyData": "true",
  "RoxygenNote": "7.3.3",
  "Config/pak/sysreqs": "libicu-dev",
  "Repository": "https://skgrange.r-universe.dev",
  "Date/Publication": "2025-12-03 14:49:23 UTC",
  "RemoteUrl": "https://github.com/skgrange/rmweather",
  "RemoteRef": "HEAD",
  "RemoteSha": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-06-01 10:16:30 UTC",
    "User": "root"
  },
  "Author": "Stuart K. Grange [cre, aut] (ORCID:\n<https://orcid.org/0000-0003-4093-3596>)",
  "MD5sum": "55521224abefbf787a55421e45da7f64",
  "_user": "skgrange",
  "_type": "src",
  "_file": "rmweather_0.2.64.tar.gz",
  "_fileid": "c87ce315dc3d6c6d6763ace925ab196efb7a7d879d1ae6d41d1943465d20e10e",
  "_filesize": 566671,
  "_sha256": "c87ce315dc3d6c6d6763ace925ab196efb7a7d879d1ae6d41d1943465d20e10e",
  "_created": "2026-06-01T10:16:30.000Z",
  "_published": "2026-06-01T10:20:27.728Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 78831459182,
      "time": 143,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7328952220"
    },
    {
      "job": 78831459390,
      "time": 144,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7328952205"
    },
    {
      "job": 78831459184,
      "time": 193,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7328957327"
    },
    {
      "job": 78831459176,
      "time": 198,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7328957193"
    },
    {
      "job": 78830968100,
      "time": 191,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7328905639"
    },
    {
      "job": 78831459136,
      "time": 106,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7328940522"
    },
    {
      "job": 78831459186,
      "time": 99,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7328938399"
    },
    {
      "job": 78831459172,
      "time": 102,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7328939201"
    },
    {
      "job": 78831459140,
      "time": 92,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7328936025"
    }
  ],
  "_buildurl": "https://github.com/r-universe/skgrange/actions/runs/26748727797",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/skgrange/rmweather",
  "_commit": {
    "id": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
    "author": "skgrange <s.k.grange@gmail.com>",
    "committer": "skgrange <s.k.grange@gmail.com>",
    "message": ":sparkles: pass  and  arguments to training functions\n",
    "time": 1764773363
  },
  "_maintainer": {
    "name": "Stuart K. Grange",
    "email": "s.k.grange@gmail.com",
    "login": "skgrange",
    "description": "An environmental and data scientist with an air quality focus. Programmatic skills and atmospheric knowledge are used to answer tricky questions. ",
    "uuid": 8771129,
    "orcid": "0000-0003-4093-3596"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.2.0",
      "role": "Depends"
    },
    {
      "package": "dplyr",
      "version": ">= 1.0.1",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "lubridate",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "pdp",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "ranger",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "role": "Imports"
    },
    {
      "package": "strucchange",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "viridis",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "role": "Suggests"
    },
    {
      "package": "openair",
      "role": "Suggests"
    }
  ],
  "_owner": "skgrange",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-24",
      "n": 1
    },
    {
      "week": "2025-34",
      "n": 2
    },
    {
      "week": "2025-49",
      "n": 1
    }
  ],
  "_tags": [],
  "_stars": 55,
  "_contributors": [
    {
      "user": "skgrange",
      "count": 63,
      "uuid": 8771129
    }
  ],
  "_userbio": {
    "uuid": 8771129,
    "type": "user",
    "name": "Stuart Grange",
    "description": "An environmental and data scientist with an air quality focus. Programmatic skills and atmospheric knowledge are used to answer tricky questions. "
  },
  "_downloads": {
    "count": 517,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/rmweather"
  },
  "_mentions": 1,
  "_devurl": "https://github.com/skgrange/rmweather",
  "_searchresults": 242,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/readme.html",
    "extra/readme.md",
    "extra/rmweather.html",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/skgrange/rmweather",
  "_realowner": "skgrange",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.1",
      "date": "2018-05-08"
    },
    {
      "version": "0.1.2",
      "date": "2018-07-16"
    },
    {
      "version": "0.1.3",
      "date": "2018-11-12"
    },
    {
      "version": "0.1.4",
      "date": "2020-05-26"
    },
    {
      "version": "0.1.5",
      "date": "2020-06-08"
    },
    {
      "version": "0.1.51",
      "date": "2020-06-15"
    },
    {
      "version": "0.2.4",
      "date": "2022-11-08"
    },
    {
      "version": "0.2.5",
      "date": "2023-11-21"
    },
    {
      "version": "0.2.6",
      "date": "2024-06-04"
    },
    {
      "version": "0.2.62",
      "date": "2025-02-21"
    },
    {
      "version": "0.2.63",
      "date": "2025-08-22"
    }
  ],
  "_exports": [
    "%>%",
    "rmw_calculate_model_errors",
    "rmw_clip",
    "rmw_do_all",
    "rmw_find_breakpoints",
    "rmw_model_importance",
    "rmw_model_nested_sets",
    "rmw_model_statistics",
    "rmw_nest_for_modelling",
    "rmw_normalise",
    "rmw_normalise_nested_sets",
    "rmw_partial_dependencies",
    "rmw_plot_importance",
    "rmw_plot_normalised",
    "rmw_plot_partial_dependencies",
    "rmw_plot_test_prediction",
    "rmw_predict",
    "rmw_predict_nested_partial_dependencies",
    "rmw_predict_nested_sets",
    "rmw_predict_nested_sets_by_year",
    "rmw_predict_the_test_set",
    "rmw_prepare_data",
    "rmw_train_model",
    "system_cpu_core_count"
  ],
  "_datasets": [
    {
      "name": "data_london",
      "title": "Example observational data for the *rmweather* package.",
      "object": "data_london",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "date",
        "date_end",
        "site",
        "site_name",
        "variable",
        "value",
        "air_temp",
        "atmospheric_pressure",
        "rh",
        "wd",
        "ws"
      ],
      "rows": 15676,
      "table": true,
      "tojson": true
    },
    {
      "name": "data_london_normalised",
      "title": "Example of meteorologically normalised data for the *rmweather* package.",
      "object": "data_london_normalised",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "date",
        "date_end",
        "site",
        "site_name",
        "value_predict"
      ],
      "rows": 258,
      "table": true,
      "tojson": true
    },
    {
      "name": "model_london",
      "title": "Example *ranger* random forest model for the *rmweather* package.",
      "object": "model_london",
      "class": [
        "ranger"
      ],
      "fields": [],
      "table": false,
      "tojson": false
    }
  ],
  "_help": [
    {
      "page": "pipe",
      "title": "Pseudo-function to re-export *magrittr*'s pipe.",
      "topics": [
        "%>%"
      ]
    },
    {
      "page": "base-functions",
      "title": "Pseudo-function to re-export functions from the *stats* package.",
      "topics": [
        "base functions"
      ]
    },
    {
      "page": "data_london",
      "title": "Example observational data for the *rmweather* package.",
      "topics": [
        "data_london"
      ]
    },
    {
      "page": "data_london_normalised",
      "title": "Example of meteorologically normalised data for the *rmweather* package.",
      "topics": [
        "data_london_normalised"
      ]
    },
    {
      "page": "dplyr-functions",
      "title": "Pseudo-function to re-export *dplyr*'s common functions.",
      "topics": [
        "dplyr functions"
      ]
    },
    {
      "page": "model_london",
      "title": "Example *ranger* random forest model for the *rmweather* package.",
      "topics": [
        "model_london"
      ]
    },
    {
      "page": "rmw_calculate_model_errors",
      "title": "Function to calculate observed-predicted error statistics.",
      "topics": [
        "rmw_calculate_model_errors"
      ]
    },
    {
      "page": "rmw_clip",
      "title": "Function to \"clip\" the edges of a normalised time series after being produced with 'rmw_normalise'.",
      "topics": [
        "rmw_clip"
      ]
    },
    {
      "page": "rmw_do_all",
      "title": "Function to train a random forest model to predict (usually) pollutant concentrations using meteorological and time variables and then immediately normalise a variable for \"average\" meteorological conditions.",
      "topics": [
        "rmw_do_all"
      ]
    },
    {
      "page": "rmw_find_breakpoints",
      "title": "Function to detect breakpoints in a data frame using a linear regression based approach.",
      "topics": [
        "rmw_find_breakpoints"
      ]
    },
    {
      "page": "rmw_model_nested_sets",
      "title": "Function to train random forest models using a nested tibble.",
      "topics": [
        "rmw_model_nested_sets"
      ]
    },
    {
      "page": "rmw_model_statistics",
      "title": "Functions to extract model statistics from a model calculated with 'rmw_calculate_model'.",
      "topics": [
        "rmw_model_importance",
        "rmw_model_statistics"
      ]
    },
    {
      "page": "rmw_nest_for_modelling",
      "title": "Function to nest observational data before modelling with *rmweather*.",
      "topics": [
        "rmw_nest_for_modelling"
      ]
    },
    {
      "page": "rmw_normalise",
      "title": "Function to normalise a variable for \"average\" meteorological conditions.",
      "topics": [
        "rmw_normalise"
      ]
    },
    {
      "page": "rmw_normalise_nested_sets",
      "title": "Function to normalise a variable for \"average\" meteorological conditions in a nested tibble.",
      "topics": [
        "rmw_normalise_nested_sets"
      ]
    },
    {
      "page": "rmw_partial_dependencies",
      "title": "Function to calculate partial dependencies after training with *rmweather*.",
      "topics": [
        "rmw_partial_dependencies"
      ]
    },
    {
      "page": "rmw_plot_importance",
      "title": "Function to plot random forest variable importances after training by 'rmw_train_model'.",
      "topics": [
        "rmw_plot_importance"
      ]
    },
    {
      "page": "rmw_plot_normalised",
      "title": "Function to plot the meteorologically normalised time series after 'rmw_normalise'.",
      "topics": [
        "rmw_plot_normalised"
      ]
    },
    {
      "page": "rmw_plot_partial_dependencies",
      "title": "Function to plot partial dependencies after calculation by 'rmw_partial_dependencies'.",
      "topics": [
        "rmw_plot_partial_dependencies"
      ]
    },
    {
      "page": "rmw_plot_test_prediction",
      "title": "Function to plot the test set and predicted set after 'rmw_predict_the_test_set'.",
      "topics": [
        "rmw_plot_test_prediction"
      ]
    },
    {
      "page": "rmw_predict",
      "title": "Function to predict using a *ranger* random forest.",
      "topics": [
        "rmw_predict"
      ]
    },
    {
      "page": "rmw_predict_nested_partial_dependencies",
      "title": "Function to calculate partial dependencies from a random forest models using a nested tibble.",
      "topics": [
        "rmw_predict_nested_partial_dependencies"
      ]
    },
    {
      "page": "rmw_predict_nested_sets",
      "title": "Function to make predictions from a random forest models using a nested tibble.",
      "topics": [
        "rmw_predict_nested_sets"
      ]
    },
    {
      "page": "rmw_predict_nested_sets_by_year",
      "title": "Function to make predictions by meteorological year from a random forest models using a nested tibble.",
      "topics": [
        "rmw_predict_nested_sets_by_year"
      ]
    },
    {
      "page": "rmw_predict_the_test_set",
      "title": "Functions to use a model to predict the observations within a test set after 'rmw_calculate_model'.",
      "topics": [
        "rmw_predict_the_test_set"
      ]
    },
    {
      "page": "rmw_prepare_data",
      "title": "Function to prepare a data frame for modelling with *rmweather*.",
      "topics": [
        "rmw_prepare_data"
      ]
    },
    {
      "page": "rmw_train_model",
      "title": "Function to train a random forest model to predict (usually) pollutant concentrations using meteorological and time variables.",
      "topics": [
        "rmw_train_model"
      ]
    },
    {
      "page": "system_cpu_core_count",
      "title": "Function to return the system's number of CPU cores.",
      "topics": [
        "system_cpu_core_count"
      ]
    },
    {
      "page": "wday_monday",
      "title": "Function to get weekday number from a date where '1' is Monday and '7' is Sunday.",
      "topics": [
        "wday_monday"
      ]
    },
    {
      "page": "zzz",
      "title": "Squash the global variable notes when building a package.",
      "topics": [
        "zzz"
      ]
    }
  ],
  "_pkglogo": "https://github.com/skgrange/rmweather/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/skgrange/rmweather/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "codetools",
    "cpp11",
    "dplyr",
    "farver",
    "foreach",
    "generics",
    "ggplot2",
    "glue",
    "gridExtra",
    "gtable",
    "isoband",
    "iterators",
    "labeling",
    "lattice",
    "lifecycle",
    "lubridate",
    "magrittr",
    "Matrix",
    "pdp",
    "pillar",
    "pkgconfig",
    "purrr",
    "R6",
    "ranger",
    "RColorBrewer",
    "Rcpp",
    "RcppEigen",
    "rlang",
    "S7",
    "sandwich",
    "scales",
    "stringi",
    "stringr",
    "strucchange",
    "tibble",
    "tidyr",
    "tidyselect",
    "timechange",
    "utf8",
    "vctrs",
    "viridis",
    "viridisLite",
    "withr",
    "zoo"
  ],
  "_score": 6.3002693145303565,
  "_indexed": true,
  "_nocasepkg": "rmweather",
  "_universes": [
    "skgrange"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.64",
      "date": "2026-06-01T10:18:45.000Z",
      "distro": "noble",
      "commit": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
      "fileid": "66933ed9cb3299c725f3f8507ceb72847241d81e285816255984a260302e420d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/skgrange/actions/runs/26748727797"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.2.64",
      "date": "2026-06-01T10:18:45.000Z",
      "distro": "noble",
      "commit": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
      "fileid": "3948c53e96e176f8f15310c9b6c08d7a2f03d10656a5147c88c269595b368444",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/skgrange/actions/runs/26748727797"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.64",
      "date": "2026-06-01T10:18:51.000Z",
      "commit": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
      "fileid": "10e1737fadaa8917fd4dba3355e85ed307f681eb0ec902a079b86ee31417e0ea",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/skgrange/actions/runs/26748727797"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.2.64",
      "date": "2026-06-01T10:19:02.000Z",
      "commit": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
      "fileid": "ee1cca31ea84eac99303500a1fc1ce8179e05855e28e4dd48baab63500a2cbd5",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/skgrange/actions/runs/26748727797"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.64",
      "date": "2026-06-01T10:18:34.000Z",
      "commit": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
      "fileid": "d32bc414589193abca74ba221dd6b2ccc886a0c754bba9352d6a08b29a71eafd",
      "status": "success",
      "buildurl": "https://github.com/r-universe/skgrange/actions/runs/26748727797"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.64",
      "date": "2026-06-01T10:17:57.000Z",
      "commit": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
      "fileid": "8074c0a6ea90340ae5f62b2edd8511d2d27908364b796e44efaf58132518c2e9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/skgrange/actions/runs/26748727797"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.64",
      "date": "2026-06-01T10:17:55.000Z",
      "commit": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
      "fileid": "6c0f8046c923339797907e5c004b0a2c8fd7713cddc0ebdf965e2735f002a5ae",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/skgrange/actions/runs/26748727797"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.2.64",
      "date": "2026-06-01T10:17:48.000Z",
      "commit": "a30a9812ab5e6953f15a7ce602f03188c9943c1b",
      "fileid": "ca4dcb95b6089b567ae4853b45bea3c9cd7663007fa2dbc695564e02ec90cefa",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/skgrange/actions/runs/26748727797"
    }
  ]
}