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.

psgc

R-CMD-check CRAN status

psgc provides access to the Philippine Standard Geographic Code (PSGC) — the official classification system for geographic areas in the Philippines published by the Philippine Statistics Authority (PSA). It bundles 12 releases (Q1 2023 – Q1 2026) and exposes them through a small, consistent set of functions.

Installation

# Install from CRAN
install.packages("psgc")

# Or install the development version from GitHub
# install.packages("pak")
pak::pak("yng-me/psgc")

Overview

Function What it does
list_releases() List all bundled PSA releases
latest_release() Name of the most recent release
get_psgc() Full PSGC table, with optional level filter and population
psgc_info() Metadata for one or more PSGC codes
get_population() Census population figures (long or wide)
map_psgc() Trace codes forward across releases

Every function defaults to the latest release. Pass a release argument to work with older data.

Usage

Browse the full list

library(psgc)

# All geographic areas in the latest release
ph <- get_psgc()
nrow(ph)
#> [1] 42046

head(ph)
#>    psgc_code                     area_name geographic_level
#> 1 0100000000       Region I - Ilocos Region              Reg
#> 2 0102800000               Ilocos Norte              Prov
#> ...

Filter by geographic level

Plain English aliases are accepted — no need to memorise codes:

get_psgc(geographic_level = "Region")
get_psgc(geographic_level = "Province")
get_psgc(geographic_level = "Barangay")

# Cities and municipalities together
get_psgc(geographic_level = "city_mun")

# Multiple levels at once
get_psgc(geographic_level = c("City", "Municipality"))

Look up a specific code

psgc_info("0100000000")           # Region I
psgc_info(c("0100000000", "0102800000"))  # batch lookup

# Short codes are accepted — trailing zeros are added automatically
psgc_info("01")      # → "0100000000" (Region I)
psgc_info("01028")   # → "0102800000" (Ilocos Norte)

Population data

# Long format (default)
get_population(geographic_level = "Region", details = TRUE)
#>    psgc_code                   area_name geographic_level  year population
#> 1 0100000000 Region I - Ilocos Region              Reg  2015    5026128
#> ...

# Wide format — one row per area, one column per census year
get_population(geographic_level = "Region", details = TRUE, wide = TRUE)
#>    psgc_code                   area_name geographic_level population_2015 population_2020 population_2024
#> 1 0100000000 Region I - Ilocos Region              Reg         5026128         5301139         5696141
#> ...

Attach population to the PSGC table

regions <- get_psgc(
  geographic_level        = "Region",
  include_population_data = TRUE
)

# population_data is a nested list-column — one data frame per row
regions$population_data[[1]]
#>   population  year
#> 1    5026128  2015
#> 2    5301139  2020
#> 3    5696141  2024

Track codes across releases

# What is the current code for this 2023-era code?
map_psgc("0100000000")

# Map to a specific target release
map_psgc("0100000000", to = "Q4_2023")

mapping_type tells you what changed: "direct" (unchanged), "renumbered", "split", "merged", or "abolished" (new code will be NA).

Geographic levels

Code Aliases accepted Description
Reg Region, region, REG, … Region
Prov Province, province, PROV, … Province
City City, city, CITY City
Mun Municipality, municipal, MUN, … Municipality
SubMun Sub-Municipality, SubMun, sub_mun, … Sub-municipality
Bgy Barangay, Brgy, barangay, BGY, … Barangay
(special) city_mun, City-Municipality, … Cities and Municipalities

Bundled releases

list_releases()
#>  [1] "Q1_2023"    "Q4_2023"    "April_2024" "Q2_2024"    "Q3_2024"
#>  [6] "Q4_2024"    "Q1_2025"    "Q2_2025"    "July_2025"  "Q3_2025"
#> [11] "Q4_2025"    "Q1_2026"

License

MIT © Bhas Abdulsamad

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.