magrittr. Every %>% is now the base pipe |>, and
magrittr is gone from DESCRIPTION.%>% call was transformed the
way R's parser transforms |>, and the resulting tree was required to match
the tree parsed from the rewritten file. A file whose trees disagreed was left
untouched and converted by hand instead.The copyright holder is now Folkehelseinstituttet. It read "Core Surveillance", which names the package family rather than a legal entity.
DESCRIPTION Authors@R now declares that holder with role = "cph".
It declared no copyright holder at all, and neither did any other package
in the fleet. Nothing in R CMD check reports that.
The copyright year is now 2026. It read 2023.
CLAUDE.md now carries a Licensing section, so the year gets checked
rather than silently ageing.
Added a get-started overview to the front of vignette("csdata"), which pkgdown promotes to "Get started". The page opened on ## Location and a function call, and never said what the package is for. The new front matter states the purpose and names the five functions that do most of the work. It also points on to the locations_norway and population_norway vignettes.
The overview also states two limitations a user meets early, each with the output that demonstrates it:
nor_locations_hierarchy_from_to() returns zero rows for every from/to pair that names "baregion". baregion_code and baregion_name are NA on all 751 rows of the bundled hierarchy table, although nor_locations_names() lists 159 BA-regions."lab_nor084467", the only location_code that nor_locations_names() repeats. Pass that table as location_reference and location_code_to_granularity_geo() returns 4 elements for a 3-element input. add_granularity_geo_to_data_set() then stops with "Supplied 4 items to be assigned to 3 items of column 'granularity_geo'".Brought the prose in R/, vignettes/, README.md, index.md and NEWS.md to the house standard: ASD-STE100 (Simplified Technical English), adapted. Split the long sentences, removed the em dashes from index.md, and capitalised the RFC-2119 keywords in the coding rules of vignette("csdata").
R/: 8 to 0.vignettes/csdata.Rmd: 1 to 0.README.md: 1 to 0.NEWS.md: 10 to 0.index.md, vignettes/locations_norway.Rmd and vignettes/population_norway.Rmd: 0 before and after.man/ from the edited roxygen. NAMESPACE is unchanged, and all 13 help pages remain.No code, data, documented function behaviour or documented number changed in this version.
README.md is the GitHub landing page: what the package is, install, one quick start, and a which-function-do-I-want table.index.md is the pkgdown home body.README.md from 49 to 280 words and added the routing table. No passage is shared with a vignette.@seealso to all 13 exported objects. A vignette code chunk covers two of them: nor_locations_names() in all three articles, and nor_population_by_age_cats() in population_norway. The other 11 say plainly that no vignette covers them.@family to four groups that share a real call-site contract: location code converters, data set column adders, population data, and unicode character lists. nor_locations_*() was deliberately left ungrouped, because the three functions share only a name prefix and return disjoint columns.nor_population_by_age_cats() and nor_population_by_sex_age_cats() examples run again. Version 2026.7.2 wrapped them in \dontrun{}, after a CRAN pretest NOTE on the CPU-to-elapsed ratio. Both now pin data.table::setDTthreads(1) for the duration of the example, and restore the previous setting.location_code_to_granularity_geo() and location_code_to_iso3() no longer claim to accept a plain data.frame. A data.frame reaches the default method. There the first warns and returns one value for the whole frame. The second returns one value per column rather than per row.location_code_to_iso3() and add_iso3_to_data_set() now state that they return "nor" without reading the input. Any string therefore yields "nor", and add_iso3_to_data_set() succeeds on a table with no location_code column.set_config() returns the assigned value invisibly, not NULL, whenever border_nor is supplied.nor_locations_names() lists all 20 values of granularity_geo, not 12. It also describes location_name_short as it is. That column is set on 38 of 616 rows. It carries three letters for counties, and it is absent for the Bergen, Stavanger and Trondheim city districts.nor_locations_redistricting() lists all 16 values of granularity_geo, not 14.nor_population_by_age_cats() explains that sex is "total" because the function filters to the sex total, not because the dataset lacks the split.nor_population_by_sex_age_cats() separates the two no-breakdown cases. Svalbard and Jan Mayen keep a real total. The unknown-location codes are NA on all three sex rows.nor_locations_hierarchy_from_to() returns zero rows for every from/to combination involving "baregion", because the bundled hierarchy table carries no BA-region codes. The example that demonstrated this by silently printing an empty table was replaced.pkgdown/ and Rplots.pdf, which pkgdown::build_site() and plotting scripts leave behind.add_iso3_to_data_set(). It assigned the ISO 3166-1 alpha-3 country code to the granularity_geo column instead of iso3. It therefore never created an iso3 column, and it silently overwrote any existing granularity_geo. It now assigns to iso3 and leaves granularity_geo untouched.add_iso3_to_data_set(), which described the bug as intended behaviour.location_code_to_granularity_geo(), location_code_to_iso3(), add_granularity_geo_to_data_set() and add_iso3_to_data_set()._b2020 datasets are removed and every data-returning function now accepts only border = 2024 (set_config(border_nor = 2020) and border = 2020 now error). Use border = 2024.nor_population_by_age_b2024 includes real male/female/total splits (fetched from SSB tables 07459 and 10826 with Kjonn = TRUE). Locations where Statistics Norway provides no sex breakdown (Svalbard, Jan Mayen, unknown) carry total with NA male/female.nor_population_by_sex_age_cats() returns population by custom age categories split by sex, with include_total_age and include_total_sex toggles.nor_population_by_age_cats() is unchanged for callers: it now filters to sex == "total" internally, so its output remains identical (total only).male + female may therefore differ from total by up to 3 people, in about 0.6% of historical cells. The national level is exact.