Site icon R-bloggers

IndiaPIN: R Data Package

[This article was first published on R on Harshvardhan, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
  • IndiaPIN contains geographic details about 19,300 PIN codes in India. Some PIN codes had more than one offices. Only the first office of that PIN code area has been retained in those cases. (Updated: December 2021.)

    Wrote my first public R package today. Indian PIN codes directory with Latitude and longitude details. ✨

    Took much shorter than I expected (less than six hours). Still need to work on vignettes and online documentation though. https://t.co/wZ0p6Kle6B

    — Harshvardhan (@harshbutjust) January 2, 2022

    Variables < svg class="anchor-symbol" aria-hidden="true" height="26" width="26" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> < path d="M0 0h24v24H0z" fill="currentColor"> < path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z">

    1. Circle: (chr) Name of the Postal Circle
    2. Region: (chr) Name of the Postal Region
    3. Division: (chr) Name of the Postal Division
    4. Office: (chr) Name of Postal Office
    5. PIN: (int) Six-digit PIN Code
    6. District: (chr) Name of the District
    7. State: (chr) Name of the State
    8. Latitude: (dbl) Latitude
    9. Longitude: (dbl) Longitude

    Data Source < svg class="anchor-symbol" aria-hidden="true" height="26" width="26" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> < path d="M0 0h24v24H0z" fill="currentColor"> < path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z">

    Department of Posts, Ministry of Communications, Government of India. URL: https://www.indiapost.gov.in/vas/pages/findpincode.aspx. Wrangled for this package by Harshvardhan ( https://harsh17.in/).


    Installation < svg class="anchor-symbol" aria-hidden="true" height="26" width="26" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> < path d="M0 0h24v24H0z" fill="currentColor"> < path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z">

    # install `devtools` if not already installed
    if (!require("IndiaPIN")) 
        devtools::install_github("harshvardhaniimi/IndiaPIN")
    
    ## Loading required package: IndiaPIN
    
    # Tidyverse
    library(tidyverse)
    
    ## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
    
    ## ✓ ggplot2 3.3.5          ✓ purrr   0.3.4     
    ## ✓ tibble  3.1.6          ✓ dplyr   1.0.7.9000
    ## ✓ tidyr   1.1.4          ✓ stringr 1.4.0     
    ## ✓ readr   2.0.2          ✓ forcats 0.5.1
    
    ## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
    ## x dplyr::filter() masks stats::filter()
    ## x dplyr::lag()    masks stats::lag()
    
    # load IndiaPIN
    library(IndiaPIN)
    data(IndiaPIN)
    

    Example < svg class="anchor-symbol" aria-hidden="true" height="26" width="26" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> < path d="M0 0h24v24H0z" fill="currentColor"> < path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z">

    Data and Variables < svg class="anchor-symbol" aria-hidden="true" height="26" width="26" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> < path d="M0 0h24v24H0z" fill="currentColor"> < path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z">

    IndiaPIN
    
    ## # A tibble: 18,169 × 9
    ## # Groups:   PIN [18,169]
    ##    Circle   Region   Division   Office     PIN District State Latitude Longitude
    ##    <chr>    <chr>    <chr>      <chr>    <int> <chr>    <chr>    <dbl>     <dbl>
    ##  1 Andhra … Kurnool… Hindupur … Peddak… 515631 ANANTAP… ANDH…     14.6      77.9
    ##  2 Andhra … Kurnool… Hindupur … Obular… 515581 ANANTAP… ANDH…     14.2      78.3
    ##  3 Andhra … Kurnool… Hindupur … Gurram… 515571 ANANTAP… ANDH…     13.9      78.2
    ##  4 Andhra … Kurnool… Hindupur … Hallik… 515311 ANANTAP… ANDH…     13.8      77.0
    ##  5 Andhra … Kurnool… Hindupur … Tammad… 515281 ANANTAP… ANDH…     14.1      77.0
    ##  6 Andhra … Kurnool… Hindupur … Bussai… 515241 ANANTAP… ANDH…     14.0      77.7
    ##  7 Andhra … Vijayaw… Tadepalli… Kavulu… 534176 WEST GO… ANDH…     16.6      80.6
    ##  8 Bihar C… East Re… Bhagalpur… Kathra… 813105 BANKA    BIHAR     84.5      24.2
    ##  9 Bihar C… East Re… Bhagalpur… Kasri … 813203 BHAGALP… BIHAR     87.3      25.3
    ## 10 Bihar C… East Re… Bhagalpur… Akidat… 853202 BHAGALP… BIHAR     25.4      84.3
    ## # … with 18,159 more rows
    

    Number of PIN codes by State/UT < svg class="anchor-symbol" aria-hidden="true" height="26" width="26" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> < path d="M0 0h24v24H0z" fill="currentColor"> < path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z">

    IndiaPIN %>% 
      group_by(State) %>% 
      summarise(Count = n()) %>% 
      arrange(desc(Count)) %>% 
      print(n = 40)
    
    ## # A tibble: 35 × 2
    ##    State                                        Count
    ##    <chr>                                        <int>
    ##  1 TAMIL NADU                                    2032
    ##  2 UTTAR PRADESH                                 1581
    ##  3 MAHARASHTRA                                   1466
    ##  4 KERALA                                        1425
    ##  5 KARNATAKA                                     1188
    ##  6 WEST BENGAL                                   1125
    ##  7 ANDHRA PRADESH                                1071
    ##  8 GUJARAT                                       1007
    ##  9 RAJASTHAN                                      986
    ## 10 ODISHA                                         933
    ## 11 BIHAR                                          853
    ## 12 MADHYA PRADESH                                 760
    ## 13 ASSAM                                          571
    ## 14 PUNJAB                                         531
    ## 15 TELANGANA                                      482
    ## 16 HIMACHAL PRADESH                               436
    ## 17 JHARKHAND                                      360
    ## 18 HARYANA                                        310
    ## 19 UTTARAKHAND                                    300
    ## 20 CHHATTISGARH                                   240
    ## 21 JAMMU AND KASHMIR                              195
    ## 22 DELHI                                           97
    ## 23 GOA                                             88
    ## 24 CHANDIGARH                                      25
    ## 25 PUDUCHERRY                                      22
    ## 26 SIKKIM                                          19
    ## 27 MEGHALAYA                                       16
    ## 28 TRIPURA                                         10
    ## 29 MIZORAM                                          9
    ## 30 THE DADRA AND NAGAR HAVELI AND DAMAN AND DIU     8
    ## 31 LAKSHADWEEP                                      7
    ## 32 ARUNACHAL PRADESH                                5
    ## 33 NAGALAND                                         5
    ## 34 ANDAMAN AND NICOBAR ISLANDS                      4
    ## 35 LADAKH                                           2
    

    PIN Code Locations on Map < svg class="anchor-symbol" aria-hidden="true" height="26" width="26" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> < path d="M0 0h24v24H0z" fill="currentColor"> < path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z">

    I will use leaflet package to plot randomly selected 50 PIN codes. I am adding the Region and Circle name in the popup.

    library(leaflet)
    library(tidyverse)
    library(IndiaPIN)
    
    data("IndiaPIN")
    
    set.seed(4)
    index = sample(nrow(IndiaPIN), 50)
    data = IndiaPIN::IndiaPIN[index,]
    
    l1 = data$Longitude
    l2 = data$Latitude
    pop = paste(data$Region, data$Circle, sep = ", ")
    
    m = leaflet() %>% 
       addTiles() %>% 
       addMarkers(lng=l1, lat=l2, popup = pop)
    
    m
    

    Also see this Stackoverflow thread to understand how to save the plots.

    See Github for source code.

    To leave a comment for the author, please follow the link and comment on their blog: R on Harshvardhan.

    R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
    Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.