
nesstarR reads .Nesstar binary files into R data frames
and writes them to CSV files.
.Nesstar is the file format of Nesstar Publisher.
Nesstar Publisher is survey documentation software from the International Household Survey
Network (IHSN). Statistical agencies, for example the Ministry of Statistics and Programme
Implementation (MoSPI), India, publish survey microdata in this
format. nesstarR does not need Nesstar software.
install.packages("nesstarR")
# Development version
devtools::install_github("saketkc/nesstarR")library(nesstarR)
x <- nesstar_parse("path/to/file.Nesstar")
x
#> <nesstar_binary>
#> File : file.Nesstar
#> Datasets : 3
nesstar_datasets(x)
#> dataset_number row_count variable_count
#> 1 1 500000 42
#> 2 2 120000 18
#> 3 3 80000 31
nesstar_variables(x, dataset_number = 1)
# Read all columns, or only the columns that you specify
df <- nesstar_read_dataset(x, dataset_number = 1)
df_subset <- nesstar_read_dataset(x, dataset_number = 1, columns = c("AGE", "DISTRICT", "INCOME"))A .Nesstar file contains XML blocks with variable labels
and category codes. Huffman coding compresses these blocks.
meta <- nesstar_metadata(x)
# one entry per dataset
ds <- meta$datasets[[1]]
ds$file_name # original survey file name
ds$variables[[1]] # list(name, label, categories)Some older NSS files do not contain these XML blocks. For these
files, nesstar_metadata() gives a warning and returns
NULL.
nesstar_export() writes each dataset to a different CSV
file. By default, it reads 50,000 rows at a time. This limits the memory
use for large files.
# All datasets, gzip-compressed (default)
nesstar_export(x, output_dir = "./data")
# Writes: data/file_ds1.csv.gz, data/file_ds2.csv.gz, ...
# Specific datasets, plain CSV, smaller chunks
nesstar_export(
x,
output_dir = "./data",
datasets = c(1, 2),
compress = FALSE,
chunk_size = 10000L
)The function returns the output file paths invisibly.
A .Nesstar file has two column types:
character.float64. nesstarR returns them as numeric.
Missing values become NA.The parser finds the byte order of the file. It tries little-endian first and then big-endian. It converts all strings to UTF-8.