India’s National Sample Survey (NSS) Household Consumption Expenditure Surveys, 18 rounds from 1981 to 2025. 51.8 million unit-level records harmonized into a single Parquet file. Query food and non-food consumption by state, food group, sector, and round via DuckDB.
Installation
# install.packages("remotes")
remotes::install_github("saketlab/consumptionsurveyindia")Data setup
Build the consumption database from MOSPI source data:
library(consumptionsurveyindia)
# Download and parse raw NSS data
ics_build(
raw_dir = "~/data/consumption_raw",
output_dir = "~/data/consumption_parquet"
)Set the default data directory:
options(ics.data_dir = "~/data/consumption_parquet")Quick start
library(consumptionsurveyindia)
library(dplyr)
con <- ics_connect("~/data/consumption_parquet")
# What rounds are available?
ics_available_data(con)
# State-level consumption expenditure
ics_consumption_by_state(con)
# Break down by food group
ics_consumption_by_state(con, by_food_group = TRUE)
# Food group expenditure shares over time
ics_expenditure_shares(con)
# Query a specific item (by name or code)
ics_query_item(con, "rice", by = "state")
# Search available food items
ics_search_items("milk")
# Consumption by food group, by state or sector
ics_consumption_by_food_group(con, by = "state")
# Diet-disease linkage with healthsurveyindia
ics_correlate_food_disease(con, health_df)
ics_disconnect(con)Core concepts
Harmonized data: All 18 rounds are unified into a single consumption table with consistent columns (state, sector, item_code, food_group, value, quantity, weight). Item codes are linked to a bundled catalogue with food group classifications.
Survey weights: All query functions compute weighted means using multiplier / 100. Aggregation runs inside DuckDB; only small summaries are collected.
Methodology break: HCES 2022-23 introduced a three-visit design. Pre-2022 and post-2022 rounds are not directly comparable. The era parameter filters by methodology period.
Recall periods: Section 5.x uses 30-day recall; Sections 6.x/7.x use 7-day recall (normalized to monthly).
Capabilities
| Function | Purpose |
|---|---|
ics_connect() / ics_disconnect()
|
Open/close DuckDB connection |
ics_consumption_by_state() |
State-level expenditure, optionally by food group |
ics_consumption_by_food_group() |
Food group shares by round, state, or sector |
ics_expenditure_shares() |
Food group expenditure shares over time |
ics_query_item() |
Query a specific food item by name or code |
ics_search_items() |
Search the item catalogue |
ics_available_data() |
Round-level summary (record counts, coverage) |
ics_available_items() |
Item availability across rounds |
ics_correlate_food_disease() |
Diet-disease linkage with healthsurveyindia |