The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
plot_inkar() now draws boundaries from
GISCO LAU 2024 instead of GADM 4.1. GADM uses pre-2016 boundaries, so
merged districts (e.g. Göttingen) and about 1% of Gemeinden were
missing. With GISCO every region at BND, BLD,
KRE, GVB and GEM is drawn (10,978
Gemeinden, 4,594 Gemeindeverbände, 400 Kreise). Higher levels are
dissolved from the Gemeinden; Gemeindeverbände use the Destatis
Gemeindeverzeichnis (31.12.2023), stored as internal data. The file is
downloaded once (about 43 MB) and cached. Maps carry the required “©
EuroGeographics” attribution, and plot_inkar() warns when a
region has no boundary.M_ID) and by an official number from its indicator
overview, which differ for 554 of 565 indicators. The bundled metadata
held both as separate rows, so 400 indicators appeared twice: once
usable but undocumented, once documented (short ID such as
q_alo, source, English texts) but marked inactive because
its number returns no data. These pairs are now merged: 565 active
indicators, 411 with their official short ID, and only 2 genuinely
discontinued ones. New columns IndID (official number) and
Short_DE (official short name).
get_inkar_data() accepts the short ID, the
M_ID and the official number ("q_alo",
"12" and "1101" give the same data), and a
name typed in full ("Arbeitslosenquote") wins over longer
names containing it. Theme now holds the 17 topic areas of
the INKAR wizard, so get_themes() and the
theme filters work.
Kreise/Gemeinden show the years available at
that level instead of the placeholders “Active”/“Unknown”. Description,
algorithm and source are filled for all active indicators (English
description for about three quarters); 29 more indicators got a unit
taken from their name. The three commuter indicators
(a_pend50, a_pend150, a_pend300,
Gemeinden level) are now active. The metadata is rebuilt by
data-raw/sync_indicators_api.R.get_inkar_geometry(): new exported
function returning the boundaries as an sf object with a
Kennziffer column that joins directly with
get_inkar_data().digits parameter:
get_inkar_data(), inkaR(), and
inkar() now accept a digits argument to round
numeric output values. The INKAR API uses single-precision floats, which
can produce artifacts such as 8.44999... instead of
8.45. Setting digits = 2 corrects this
transparently (e.g. inkar("12", digits = 2)).geodata is no longer used: automatic
maps no longer depend on geodata/GADM.get_inkar_data(c("xbev", "bip"), format = "wide") now
returns columns xbev and bip instead of names
built from the truncated indicator title
(e.g. Bruttoinlandsprodukt_BIP_absolut_in_Mill). The names
are the same in lang = "de" and "en".search_indicators(), the name lookup in
get_inkar_data(), compare_regions(),
compare_districts(), inkar_trends(regions = )
and plot_inkar(highlight = ) no longer interpret their
input as a regular expression.compare_districts() ID matching: IDs
now match as a prefix ("09" keeps all of Bavaria) or
exactly with leading zeros ignored (1001 matches
"01001"), never in the middle of an ID.BND and BLD levels returned no
data: the INKAR API expects the codes BU (Bund)
and BL (Laender). BND/BLD stay
the public codes and are translated internally, so
get_inkar_data(), get_geographies(),
select_level() and select_years() now return
data for both levels. The misleading “Most INKAR indicators are only
available at KRE or GEM level” message has been removed.Indikator/indicator_name was NA
for every indicator whose API key differs from its official number (554
of 565), because the name was joined on the official number. It is now
joined on the API key.update_indicators() never worked: it
sent an empty indicator list to Wizard/GetMöglich, which
the API answers with HTTP 500, so it always reported “Could not reach
INKAR API”. It now reads the wizard’s topic areas
(Wizard/GetBereiche) and their indicators
(Wizard/GetIndikatorenZuBereich), lists indicators missing
from the local metadata and attaches them as attribute
"new_indicators"; active local indicators the API dropped
are reported as "removed_indicators". The API’s European
(NUTS-2) indicators are ignored, since the package supports German
levels only.plot_inkar(breaks = "quantile"):
quantiles were only used as legend ticks on a continuous scale, so
colors stayed linear and the labels overlapped. The map now uses five
quantile classes with one color step each. Legend values are no longer
shown in scientific notation (3e+06).plot_inkar() level detection:
"Bundesländer" data was detected as Bund and
drawn as a single national polygon; level detection now matches whole
labels. GEM maps matched no region, because they were
joined against GADM’s Gemeindeverband layer.search_indicators("Bevölkerung (mit") and the same text in
get_inkar_data() failed with “invalid regular expression”;
compare_regions(df, "Frankfurt (Oder)") silently returned
no rows.search_indicators().Total population was split into invalid IDs,
and a short input such as 1 silently selected indicator
12. Names are now matched as a whole, several matches
narrow the list, and inputs under 3 characters are not
fuzzy-matched.NULL result deleted its slot in the result
list, so it was dropped silently.get_inkar_data() no longer adds
“API response missing expected columns” and “No data found for this
variable/level combination” after the connection message.get_inkar_data()
stops with a clear error for NA, "" or
character(0); get_geographies() rejects
unknown level codes.Kürzel column
of view_indicators("de") and the level menu of
select_level() showed <U+00FC>-style
escapes when the package was installed in a non-UTF-8 locale.indicators table not found after
library(inkaR): with LazyData: true
the dataset lives in the lazy-data environment, so
exists("indicators", envir = asNamespace("inkaR")) was
always FALSE outside devtools::load_all() and
testthat. As a result get_indicators() returned 0 rows,
search_indicators() errored, get_themes() was
empty, select_level() / select_years() skipped
ID resolution, and get_inkar_data() sent short IDs such as
"bev_korr" to the API unresolved. All sites now use an
internal inkar_indicators() helper. A regression test runs
in a fresh R process via callr (added to Suggests).get_inkar_data() now stops with a clear error (and
suggestions when stringdist is installed) instead of
passing an unknown non-numeric ID to the API and returning an empty
result. Numeric M_IDs not in local metadata are still passed on.CURL_CA_BUNDLE.view_indicators() DE:
dplyr::any_of() was incorrectly used as a rename target
inside dplyr::select(). The
Statistische Grundlagen column is now normalized with an
explicit dplyr::rename() before the select()
call, removing the silent column-drop.utils::adist() invalid argument:
method = "osa" was passed to utils::adist(),
which does not accept a method parameter. The argument has
been removed from all call sites in search_indicators() and
select_indicator().dplyr::pick() outside data-masking
context: Description/unit lookup in
get_inkar_data() called dplyr::pick() inside
an if() condition, which is only valid inside
mutate() / summarise(). Replaced with
pre-computed has_desc_en / has_unit_en logical
flags evaluated before the mutate().M_ID column after EN name
join: The English indicator name lookup joined a table that
included M_ID, creating a spurious M_ID.y
column. The column is now dropped from the lookup before the join.get_time_references() schema guard:
Added an explicit check for required API response columns
(Gruppe, IndID, RaumID,
ZeitID) before calling dplyr::select(),
producing an informative warning instead of a cryptic error when the API
changes its response shape.api.R redundant
requireNamespace("httr2"): Removed the runtime
check; httr2 is a hard Imports dependency and
is always available.!= "application/json" to
!startsWith(..., "application/json") so that responses with
a charset=utf-8 suffix no longer trigger a spurious
warning.globalVariables false entry:
select_level is an exported function, not a free variable;
removed from the globalVariables() declaration.data.R Roxygen syntax: Fixed a stray
blank line before the closing } of the
\describe{} block in the indicators dataset
documentation.get_geographies() caching: Region
lists fetched from the API are now cached for 7 days, eliminating a
redundant network round-trip on every get_inkar_data()
call.plot_inkar() year type coercion: The
year parameter is now coerced with
as.integer() before filtering, so
year = 2021L, year = 2021, and
year = "2021" all produce identical results.inkar_trends() wide-format guard:
Passing wide-format data (year columns) to inkar_trends()
now raises an informative error suggesting format = "long"
instead of a generic column-not-found error.parse_inkar_json() now distinguishes German locale
formatting (1.234,56 → 1234.56) from English
decimal notation (1.5) by checking for the co-occurrence of
both . and , in the vector, preventing
inadvertent corruption of English-formatted values.DESCRIPTION: Removed unused
lifecycle entry from Suggests.compare_districts()
with German-language data, inkar_trends() with
German-language data, wide-format error message,
plot_inkar() with long-format English data and custom
sf geometry, plot_inkar() year parameter type
coercion, clear_inkar_cache() file-deletion verification,
and the new digits rounding parameter.skip_on_ci() calls with
skip_if(nzchar(Sys.getenv("CI"))).search_indicators() and
view_indicators() calls in capture.output() to
suppress cat() noise during test runs.compare_districts() /
compare_district(): Filter downloaded
datasets by district IDs (Kennziffer) or names.compare_region(): Singular alias for
compare_regions().plot_inkar() upgrades:
BND (Germany level 0) and
GEM (Municipalities level 3) boundaries.geom parameter to plot data on custom
sf boundaries (e.g. ROR spatial planning
regions).utils::adist() when the stringdist
package is not available.~/.inkaR_history to
tools::R_user_dir("inkaR", which = "config") in interactive
sessions, and disabled it entirely in non-interactive sessions.pkgdown package documentation website.inkar(): English-first shortcut alias
for get_inkar_data() with lang = "en" and
year = "latest" as defaults.compare_regions(): Filter a downloaded
data frame to specific regions by partial name match.inkar_trends(): Plot time series as a
ggplot2 line chart for selected regions.get_themes(): List unique indicator
themes from the local metadata for use with theme
filtering.year = "latest":
get_inkar_data() now accepts year = "latest"
to automatically download only the most recent available year.plot_inkar() improvements: New
highlight, breaks (equal/quantile), and
title parameters for richer map customization.search_indicators() /
view_indicators(): New theme
parameter to pre-filter by indicator domain (see
get_themes())._pkgdown.yml
for documentation website generation.get_inkar_data()
now resolves indicator IDs through five fallback tiers (exact, numeric,
normalized, partial name, fuzzy).Gross_domestic_product) instead of opaque IDs
(ind_11).cli progress bar.search_indicators() now compares against
Name_EN only and uses a tighter Jaro-Winkler
threshold.update_indicators() stability:
Gracefully handles API 500 errors instead of crashing.get_cache_dir() no
longer writes to ~/.cache/R/inkaR/ during non-interactive
sessions (e.g. R CMD check). In non-interactive
environments the cache now uses tempdir() (cleaned up at
session end), while interactive sessions continue to use the persistent
tools::R_user_dir("inkaR", which = "cache") directory. This
resolves the NOTE that caused the package to be archived on CRAN
(checking for new files in some other directories).inkaR() without arguments now opens a professional CLI
wizard to guide users through selecting an indicator, then an available
spatial level, and finally a year or year range.c("bip", "xbev")) or enter
multiple IDs in the wizard (separated by spaces).format = "long" (default) stacks indicators in a tidy
format.format = "wide" pivots indicators into individual
columns for direct comparison and mathematical operations.stringdist package
(Jaro-Winkler method).cli package for
high-end, paginated, and responsive terminal tables.theme_inkaR(), a high-end ggplot2 theme with dedicated
light and dark modes.plot_inkar() now
supports bilingual labels, automatic unit extraction, and professional
color palettes (Viridis, Magma).try()
to ensure CRAN checks pass even with environment-specific network
limitations.DESCRIPTION.\value tags to exported
.Rd files (e.g., clear_inkar_cache()).\dontrun{} with
\donttest{} or if(interactive()) to ensure
proper example testing.tempdir()).tools::R_user_dir) to
heavily improve GetGebieteZumRaumbezug lookup times across
sessions.httr2::req_perform_parallel) for exploring spatial levels,
eliminating the sequential wait time.plot_inkar() for native geospatial mapping
with ggplot2 and sf by directly downloading
and matching GADM polygon data.testthat by completely
regenerating httptest2 records.NA) by implementing
robust locale-agnostic numeric parsing.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.