Skip to content

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

@deckyard/statfiles

test Documentation release

Readers for the data files of SPSS, Stata and SAS, for Jennifer programs: Stata .dta (formats 104 to 119), SPSS .sav, .zsav and portable .por, SAS XPORT .xpt (versions 5 and 8), and SAS data sets .sas7bdat with the value labels of .sas7bcat format catalogs. Every reader returns one Dataset: the variables with their labels, display formats, value labels and declared missing values, and the cells by column, ready for stats and linalg or as CSV. Read-only.

Documentation

Install

jvc add @deckyard/statfiles

This vendors the deck to vendor/<scope>/statfiles/. Without jvc, unpack the src/ subtree of a release archive (<scope>-statfiles-<version>.tar.gz) there.

Usage

import "@deckyard/statfiles/" as statfiles;

def ds as statfiles.Dataset init statfiles.read(fs.readBytes("survey.sav"));
io.printf("%d rows, mean age %.1f\n", $ds.rowCount, stats.mean(statfiles.present($ds, "age")));
fs.writeString("survey.csv", statfiles.toCsv($ds, true));

examples/ has one program per format: dta_describe.j, sav_summary.j, por_summary.j, xpt.j and sas7bdat.j.

Requirements

Jennifer 0.26.0 or newer. No capability: the readers take the file as bytes, so reading it from disk is the caller's.

Development

tools/check-all.sh                   # the full gate, as CI runs it
jennifer test src/statfiles_test.j   # the test overlay
tools/check-docs.sh                  # docs against the code
tools/pack.sh dist                   # build the release archive

Licence

LGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <[email protected]>.

tools/check-headers.sh checks every source file's SPDX header against deck.toml.

Releases

Packages

Contributors