StatDataViewer Logo

User guide

StatDataViewer documentation

A task-oriented reference for moving fast in StatDataViewer. Every action is reachable three ways — a right-click, a single-letter shortcut, or a visible button — so pick whichever fits your hand and keep working.

Last updated April 21, 2026 · Applies to SAS (.sas7bdat, .xpt), R (.rds, .rdata), SPSS (.sav), Stata (.dta), Excel (.xlsx), and PDF files

Getting started#

StatDataViewer is built around the idea of opening a library — a folder of datasets — instead of opening one file at a time. Once a library is open, every action is within one right-click or one keystroke.

60-second quick start

  1. Open a library. Use Add Library from the File menu (or the Workspace right-click menu) to point at a folder of datasets. All supported files appear at once.
  2. Pick a dataset. Double-click it in the Workspace. The data window opens with a Variables panel on the side.
  3. Filter with one key. Click a value in a column and press D — the dataset is filtered to rows matching that value.
  4. Count values. With any cell in a column selected, press F to get a frequency table for that variable.
  5. Jump to a variable. Find it in the Variables panel, press G — the data window scrolls to that column.

Tip — right-click is the discovery tool

Whenever you are unsure what you can do, right-click. Every menu is context-aware: right-click a cell to filter on it, right-click a column header to reorder or hide it, right-click a library to refresh or rename it. Context menus also show the shortcut key for each action — the fastest way to learn shortcuts.

Keyboard shortcuts#

StatDataViewer shortcuts are intentionally single letters — each letter matches the first letter of the action. Learn these seven and you will rarely need the mouse: D, L, F, N, S, B, G.

CategoryShortcutAction
Filtering D Dataset filter — filter the current dataset on the value under the cursor.
Filtering L Library filter — apply a WHERE clause across every dataset in the library.
Filtering I Filter with the in (…) operator — hold Ctrl and click several cells, then press I to include all of them.
Filtering Alt+> / Alt+< Filter with >= or <= against the value under the cursor — useful for numeric or date thresholds.
Filtering C Clear the current dataset filter.
Filtering Alt+C Clear the library filter.
Filtering Z / Ctrl+Z Undo the last dataset filter step.
Frequency F Frequency of values for the selected variable(s).
Frequency N Number of distinct USUBJIDs per value.
Variables G Go to the variable under the cursor (switches between the data window and Variables panel).
Variables V Show the selected variable's metadata in the Variables panel.
Variables H Hide the selected variable (column).
Variables Alt+H Hide all variables in the Variables panel.
Variables U Unhide all variables.
Variables Alt+ / Alt+ Shift the selected variable left or right.
Variables B Add the selected variable to the BY list — used by Frequency and Descriptive Statistics to break output out by group.
Statistics S Descriptive Statistics (univariate) for the selected numeric variable — N, mean, SD, min, quartiles, max.
Navigation Q / Ctrl+P Quick Open — fuzzy-find any dataset across every open library.
Tabs W / Ctrl+Shift+W Close the current dataset window / close every open dataset window.
Tabs Ctrl+Tab Cycle to the next dataset tab.
View Ctrl+1 / Ctrl+2 Toggle the left Workspace panel / the right inspector panel.
View Ctrl+D Toggle Dark Mode.
View Ctrl++ Increase font size.
View Ctrl+- Decrease font size.

Note

Shortcut keys shown here use Windows naming. On macOS, Ctrl maps to Control and Alt to Option. Single-letter shortcuts (D, L, F, etc.) are identical on both platforms. Use Show Shortcut Keys from the Help menu for a complete, always-current list — see Settings & shortcut keys.

Blog: 10 Keyboard Shortcuts Every SAS Programmer Should Know

Filtering data#

StatDataViewer has two kinds of filter: a dataset filter that applies only to the table in front of you, and a library filter that applies the same WHERE clause to every dataset in the library — ideal for narrowing to one subject or one site across all domains.

Dataset filter

Right-click the cell whose value you want to filter on, then choose one of the IF clauses from the context menu. Repeat to add more conditions. The default operator is =. The current filter expression is always visible in the status bar.

Shortcut: D — short for Dataset filter.

Filter operators: in, >=, <=

Beyond the default = operator (D), the right-click menu and the shortcut keys below let you build richer conditions without writing the expression by hand:

  • Iin (…) operator. Hold Ctrl and click several cells in the same column, then press I. The filter becomes SEX in ("F") and AESEV in ("MODERATE","SEVERE")-style.
  • Alt+>greater than or equal. Press on a numeric or date cell to filter to all rows at or above that value, e.g. AGE >= 65 or AESTDTC >= "2023-06-01".
  • Alt+<less than or equal. Mirrors the above for upper bounds.

Tip — chain operators for a real clinical query

Pick any row in ADAE, press Alt+> on an ASTDT value to restrict to on-treatment events, then Ctrl-click two AESEV cells and press I to keep only moderate and severe events. Two keystrokes, no code.

Edit the filter expression manually

Click the filter bar above the data table (or choose Edit Dataset Filter from the right-click menu) to type or paste a WHERE expression directly. Supports any SAS-compatible expression: AEBODSYS = "INFECTIONS" and AESEV ne "MILD".

Clearing the dataset filter

Right-click anywhere and choose Clear Dataset Filter, or press C.

Undoing a dataset filter step

Press Z / Ctrl+Z. Each press steps back one filter condition, letting you retrace without starting over.

Library filter (WHERE across the library)

Right-click a value you want to use in the WHERE clause, then choose the WHERE entry from the context menu. The same clause is then applied to every dataset in the library. Shortcut: LLibrary filter.

Caution

Only one condition can be defined for the library filter. If you are not seeing the rows you expect, check the Status Bar — an active library filter is shown there so you never accidentally look at a filtered view.

Clearing the library filter

Right-click anywhere in the data and choose Clear Library Filter, or press Alt+C.

Filtering from the Frequency window

Inside the Frequency window, right-click a row and pick a filter clause to apply it back to the dataset. Sort the Frequency window by Value to find the entry you want quickly when there are many distinct values.

Frequencies & crosstabs#

Frequency of one variable

Click any cell in a column, then right-click and choose Frequency, or press F. Works on both character and numeric variables. The result shows Value, Count, and Percent.

Frequency of multiple variables (crosstabulation)

  1. Hold Ctrl and click one cell in each variable you want to include (one cell per variable).
  2. Right-click one of the selected cells and choose Frequency — or press F.

The result is a multi-dimensional frequency combining all selected variables. This is the fastest way to replicate a PROC FREQ TABLES var1*var2 without writing code.

Distinct USUBJIDs for one variable

Click any cell in the target column, right-click, and choose Frequency (USUBJID), or press N. The result shows how many distinct subjects have each value — essential for safety incidence tables.

Distinct USUBJIDs across multiple variables

  1. Hold Ctrl and click one cell per variable.
  2. Right-click and choose Frequency (USUBJID), or press N.

Break frequency out by a BY variable

To produce a frequency broken out by treatment arm, site, or any other grouping, first add one or more BY variables (press B on a cell in the grouping column). Then press F on the variable you want to tabulate. The Frequency window adds one Count/Percent column per BY-group level.

Clinical example. Open ADAE, click any cell in TRTA and press B. Now click any cell in AEBODSYS and press F — the result is a body-system frequency with one column per treatment arm, the same as PROC FREQ; BY TRTA; TABLES AEBODSYS;. Press N instead of F to get distinct-USUBJID counts per arm — ready for a safety incidence table.

Tip — sort and filter inside the Frequency window

Click any column header in the Frequency window to sort. Right-click a row to filter the parent dataset on that value. This feedback loop (frequency → filter → frequency) is the fastest way to drill into data.

Descriptive statistics#

The Statistics panel computes N, mean, standard deviation, minimum, maximum, median, and quartiles for numeric variables — equivalent to PROC MEANS or PROC UNIVARIATE output, with no SAS needed.

Open the Statistics panel

Click any cell in a numeric column and press S, or right-click and choose Descriptive Statistics. The Statistics panel opens alongside the data window showing summary statistics for that variable.

Shortcut: S — short for Statistics. Select cells in multiple numeric columns with Ctrl-click first to get summary statistics for each column side-by-side.

Set BY variables

Inside the Statistics panel, click Set By Variables to choose one or more categorical variables. The statistics are then computed separately for each level of the BY group — equivalent to a BY statement in PROC MEANS.

Example: set AEBODSYS as a BY variable to get mean duration by body system.

Univariate detail

For a single numeric variable, the Statistics panel also shows a histogram and box-plot when you expand the Univariate section. This gives you the distribution shape at a glance without running PROC UNIVARIATE.

Note

Statistics always reflect the current dataset filter. If a dataset filter is active, statistics are computed on the filtered rows only — the status bar reminds you of the active filter.

Variables & columns#

Hide a variable

Select any cell in the column and press H, or right-click and choose Hide Variable.

Hide all variables

From the Variables panel, right-click any row and choose Hide All Variables, or press Alt+H. Start with a blank slate, then unhide only the columns you need.

Unhide all variables

Right-click any cell and choose Unhide Variables, or press U.

Jump to a variable

Find the variable in the Variables panel, right-click and choose Go to Variable — or press G. The data window scrolls to that column.

Look up a variable's metadata

Position the cursor in the variable's column and press V. The Variables panel shows the label, type, length, and format for that variable.

Reorder variables

Right-click a column header and choose Shift Variable Left or Shift Variable Right, or use Alt+ and Alt+. Position updates in both the data window and the Variables panel simultaneously.

Add a BY variable

Click any cell in the variable you want to group by, then press B — or right-click and choose Add By Variable. The variable is appended to the dataset's BY list and is used by downstream actions (Frequency, Descriptive Statistics) as a grouping key. Repeat on additional variables to add more BY levels.

To replace the whole BY list in one shot, open the Variables panel, right-click any variable, and choose Set By Variables…. Pick one or more variables from the dialog and confirm.

Tip — what BY variables actually do

BY variables change what F (Frequency) and S (Descriptive Statistics) produce: the output is broken out by each combination of BY-variable values. For example, add TRTA as a BY variable in ADAE, press F on AEBODSYS, and you get one frequency column per treatment arm — the equivalent of PROC FREQ; BY TRTA; TABLES AEBODSYS; without writing code. Clear the list from the Variables panel right-click menu.

Copy & export#

Copy a cell range

Select one or more cells (click and drag, or Shift-click to extend the selection), then press Ctrl+C. The values are copied to the clipboard as tab-delimited text, ready to paste into Excel or a SAS editor.

Copy with column headers

Right-click the selection and choose Copy with Column Headers. The first row of the clipboard output will contain the variable names — useful when pasting into Excel and needing the header row.

Copy an entire column

Right-click any cell in the column and choose Copy Variable Selection. This copies all visible (filtered) values in that column to the clipboard — a fast way to pull a list of subjects, sites, or values into another application.

Tip — copy filtered rows only

If a dataset filter is active, Copy and Copy with Column Headers copy only the rows currently visible. Apply the filter first, then copy — you get exactly the subset you want without extra steps.

Libraries & workspace#

Every open folder appears as a library in the Workspace panel. Most library operations live in the right-click menu of the library entry.

Add a library

Go to File → Add Library (or right-click in the Workspace panel and choose Add Library). Select a folder; all supported files inside appear immediately.

Remove a library from the workspace

Right-click the library and choose Remove. The folder on disk is untouched — only the workspace reference is removed.

Refresh a library

Right-click the library and choose Refresh. Newly created or updated datasets on disk are picked up without restarting.

Set a library name (libname)

  1. Right-click the library in the Workspace panel.
  2. Choose Set Library Name.
  3. Type the name you want (e.g. SDTM, ADAM, WORK).

The name appears as the library prefix in the workspace and is remembered across sessions.

Manage all libraries

Choose File → Manage Libraries to open the Manage Libraries dialog. From here you can reorder, edit paths, set names, and adjust settings for all open libraries in one place.

Pin a library to the top of the workspace

Right-click a library and choose Pin to Workspace. Pinned libraries always appear at the top, regardless of the order in which they were added. Unpin with the same menu.

Library Dashboard

Right-click a library and choose Library Dashboard to open a dedicated window showing only the pinned items inside that library — the domains, ADaM datasets, or subfolders you come back to again and again. This is faster than scrolling the full workspace tree on large trials.

Pin an item to the dashboard

Inside the workspace, right-click any dataset or folder and choose Pin to Library Dashboard. The item appears in that library's dashboard immediately. The dashboard persists across sessions, so your curated list is there the next time you open the app.

Unpin or refresh

Inside the dashboard window, select one or more rows and click Unpin to remove them. Click Refresh to re-scan the library — useful when the folder on disk has changed since the dashboard was last opened.

Tip — one dashboard per library

Each library gets its own dashboard — you can open several at once (one per active study) and arrange them side-by-side. The window title always shows Library Dashboard – <library name> so there's no confusion.

Library settings#

Each library has its own settings accessible via right-click → Library Settings.

Set library color

Right-click the library and choose Set Library Color. Pick a color from the palette; the library icon and its datasets in the workspace are tinted that color. Useful when you have SDTM, ADaM, and output libraries open at the same time.

Include subfolders

Right-click the library and choose Set Include Subfolder to toggle whether datasets in subdirectories appear in the library listing. Useful for studies organized with domain-level subfolders.

Set a library file filter

Right-click → Set Library File Filter to specify which file types appear in the library. For example, show only .sas7bdat files and hide XPT files, or vice versa.

Move a library to a different folder

Right-click the library and choose Edit Library Path. Navigate to the new folder. The library name, color, and settings are preserved — only the path changes.

Close a library

Right-click the library and choose Close Library. All tabs from that library are also closed. The library can be re-added at any time.

Tabs#

Each open dataset lives in its own tab. StatDataViewer can have dozens of tabs open simultaneously — use grouping and keyboard navigation to stay oriented.

Open a dataset in a new tab

Double-click a dataset in the Workspace panel. Alternatively, right-click it and choose Open. If the dataset is already open, its tab is activated instead of opening a duplicate.

Group tabs by library or name

Right-click the tab bar and choose Group Tabs by Library to visually cluster all tabs from the same library together. Choose Group Tabs by Name to alphabetically cluster datasets with similar names (e.g. all AE-prefixed domains).

Close all tabs

Right-click the tab bar and choose Close All Tabs. The workspace and library definitions are preserved — only the open data windows are closed.

Locate a tab in the workspace

Right-click a tab and choose Locate in Workspace. The Workspace panel scrolls to and highlights the corresponding dataset entry — useful when you have many libraries open and have lost track of where a dataset lives.

Sessions#

A session saves the full state of your workspace: which libraries are open, which datasets are open in tabs, and what filters are active. Restore a session to jump back to exactly where you left off.

Save the current session

Go to File → Save Session (or Session → Save Session). Give the session a descriptive name such as Study XYZ — Safety Review. Sessions are saved locally and persist across application restarts.

Open a saved session

Go to File → Open Session and select the session from the list. All libraries, tabs, and filters from that session are restored in one step.

Rename a session

In the Session manager (accessible from File → Manage Sessions), right-click a session and choose Rename.

Delete a session

In the Session manager, right-click the session and choose Delete. The libraries and files themselves are untouched.

Display settings#

Show variable labels in column headers

By default, column headers show the variable name (e.g. AEBODSYS). To switch to variable labels (e.g. "Body System or Organ Class"), right-click any column header and choose Show Variable Labels. Toggle back with Show Variable Names.

Tip

Label mode is especially helpful when reviewing datasets with cryptic variable names. Name mode is faster for programmers who know the names by heart. The setting is remembered per-dataset.

Dark mode

Go to View → Dark Mode to toggle the application theme. Dark mode reduces eye strain during long review sessions. The preference persists across restarts.

Adjust font size

Use Ctrl++ to increase and Ctrl+- to decrease the font size. The size is remembered across sessions.

SDTM tools#

StatDataViewer includes built-in support for CDISC SDTM conventions, reducing the need to write code for common SDTM review tasks.

Join a domain with its supplemental (SUPP__) dataset

Open any SDTM domain such as AE. Right-click the dataset tab (or a column in the data window) and choose Join with Supplemental. StatDataViewer automatically looks for a matching SUPPAE dataset in the same library, then performs the IDVAR/IDVARVAL pivot and merges the supplemental parameters as new columns.

The result is a new transposed view — no code required. The join is non-destructive: the original datasets are unchanged.

SDTM convention handled automatically

StatDataViewer follows the CDISC SDTM IG convention: supplemental datasets are identified by the SUPP prefix followed by the domain code. IDVAR and IDVARVAL are used to match rows. All QNAM values become individual columns in the joined view.

Requirement

The supplemental dataset (SUPP__) must be in the same library as the parent domain for the automatic join to work. If they are in different folders, add both folders as libraries and then move the supplemental dataset, or use the Manual Supplemental Join option.

Blog: How to Review SDTM Data Faster — A Clinical Programmer's Guide

Compare datasets#

The Compare tool is StatDataViewer's replacement for PROC COMPARE. It finds rows and cells that differ between a base dataset and a compare dataset — useful for validation, re-processing verification, and amendment reviews.

Open the Compare dialog

Go to Tools → Compare Datasets. The Compare dialog opens with fields for the base dataset, the compare dataset, ID variables, comparison variables, and options.

Set up a comparison

  1. Base dataset: The reference version (e.g. the previous delivery).
  2. Compare dataset: The dataset you want to compare against the base (e.g. the new delivery).
  3. ID variables: Variables that uniquely identify a row, such as STUDYID USUBJID AESEQ. Rows are matched on ID variables before comparing values.
  4. Comparison variables: Leave blank to compare all common variables, or specify a subset.

Run the comparison

Click Compare. Results appear in three sections:

  • Matching rows: Rows present in both datasets.
  • In base only / In compare only: Rows that could not be matched by ID.
  • Value differences: Cell-level differences for matched rows, showing the variable name, base value, compare value, and row ID.

Apply filters before comparing

Dataset filters are respected by the comparison. Filter both datasets to a specific subject or time period before running Compare to narrow the scope of the review.

Tip — compare across libraries

The base and compare datasets do not need to be in the same library. You can compare a dataset from a PREV_DELIVERY library against one from a CURRENT_DELIVERY library. Add both folders as libraries first.

Blog: PROC COMPARE Without SAS — Dataset Comparison in StatDataViewer

External files#

StatDataViewer is not limited to statistical datasets. It can open Excel workbooks and PDF documents directly, so you can keep your entire review in one application.

Open an Excel file

Add a folder containing .xlsx files as a library. Excel files appear in the library listing alongside SAS datasets. Double-click to open. Each sheet opens as a separate tab. Filtering, frequency, and copy/export work the same as with statistical datasets.

Supported Excel features

StatDataViewer reads cell values, data types, and sheet names. Cell formulas are shown as their computed result. Merged cells are unmerged automatically for clean tabular display.

Open a PDF file

Add a folder containing .pdf files as a library. PDF files appear in the listing. Double-click to open in the built-in PDF viewer. Navigation, zoom, and text search are available within the viewer.

Supported formats summary

FormatExtension(s)Notes
SAS dataset.sas7bdatFull support including formats and labels
SAS transport.xptV5 and V8 transport files
R data.rds, .rdataSingle objects and workspaces
SPSS.savValue labels shown
Stata.dtaStata 12–18
Excel.xlsxMulti-sheet, read-only
PDF.pdfBuilt-in viewer with search

Settings & shortcut keys#

Open the Settings dialog

Go to Edit → Settings (Windows) or StatDataViewer → Preferences (macOS). The Settings dialog is organized into tabs: General, Display, Libraries, and Advanced.

Show Shortcut Keys dialog

Go to Help → Show Shortcut Keys. A dialog opens listing every keyboard shortcut available in the application, organized by category. This is the definitive, always-current shortcut reference — it updates automatically when new features are added.

Tip

The Shortcut Keys dialog is searchable. Type any action or key to filter the list — for example, type "filter" to see every shortcut related to filtering.

Check for updates

Go to Help → Check for Updates. StatDataViewer contacts the update server and shows the installed version alongside the latest available version. Click Download to get the installer. See the Changelog for what changed in each release.

SDVBridge — SAS Enterprise Guide integration#

SDVBridge is a free plugin for SAS Enterprise Guide that adds a toolbar button linking directly to StatDataViewer. Click the button in SAS EG and the active dataset opens in StatDataViewer instantly — no export, no copy-paste, no intermediate file.

Install SDVBridge

  1. Download SDVBridge.zip from the Download page.
  2. Extract and run the installer. StatDataViewer must already be installed on the same machine.
  3. Restart SAS Enterprise Guide. A new Open in StatDataViewer button appears in the toolbar.

Requires SAS Enterprise Guide 7.15 or later on Windows.

Send the active dataset to StatDataViewer

With a dataset open in SAS EG's data table view, click the Open in StatDataViewer toolbar button. StatDataViewer opens (or comes to the foreground if already running) and loads the dataset from the SAS work library immediately.

Browse SAS EG libraries from StatDataViewer

Once the SDVBridge connection is active, StatDataViewer can list the SAS libraries open in the running SAS EG session. Use File → Open SAS Session Library to browse and open any dataset visible to SAS EG — including WORK, permanent libraries, and SAS/ACCESS engine libraries (e.g. Oracle, Teradata).

Tip — keep both open during a review

The intended workflow: run your SAS program in SAS EG to create or update a dataset, then click the SDVBridge button to review the result in StatDataViewer without writing or running a separate PROC PRINT or PROC CONTENTS.

Note

SDVBridge communicates with StatDataViewer over a local loopback connection — no data leaves the machine. If a firewall blocks loopback connections, add an exception for the StatDataViewer process.

AI Chat#

The AI Chat panel lets you ask natural-language questions about the open dataset and get instant answers — without writing a query, a frequency table, or a filter by hand. It is powered by a large language model (LLM) running locally or via a configured API key.

Open the AI Chat panel

Go to View → AI Chat, or click the chat icon in the toolbar. The panel opens alongside the data window.

Ask a question

Type a question in plain English and press Enter. Examples:

  • "How many subjects have AESEV = 'SEVERE'?"
  • "What is the mean AVAL for PARAMCD = 'ALT' at AVISIT = 'WEEK 12'?"
  • "Show me the most common preferred terms."
  • "Are there any subjects with duplicate AESEQ values?"

AI Chat translates the question into a filter or computation, executes it on the open dataset, and returns the answer — along with the underlying filter expression so you can verify the logic.

Decision review

For datasets with pending decisions (e.g. medical coding review, edit check resolution), AI Chat can surface rows that require a decision and suggest resolutions based on configured rules. This feature is configured under Settings → AI Chat → Decision Mode.

Note — LLM connection required

AI Chat requires a configured LLM connection. Go to Settings → AI Chat → LLM Connection to enter an API key or point to a local model endpoint. When no connection is configured, the AI Chat panel shows a setup prompt.

Data privacy

If you configure an external LLM API (e.g. OpenAI, Anthropic), StatDataViewer sends only the schema (variable names and labels) and summary statistics to the API — not the raw row data. For PHI datasets, use a locally-hosted model to keep all data on-premise. See Settings → AI Chat → Privacy Mode.

ADaM Builder#

ADaM Builder is a rule-driven pipeline for constructing CDISC ADaM datasets from SDTM source — without writing SAS code. You define derivation rules in a structured editor, run them against an SDTM library, and inspect the results interactively.

Early access feature

ADaM Builder was introduced in version 2026.04.19. The interface is functional but documentation is actively expanding. Email support for detailed guidance or to request a walkthrough.

Open ADaM Builder

Go to Tools → ADaM Builder. The builder opens in a new panel with three tabs: Rules, Run History, and Decision Queue.

Define derivation rules

In the Rules tab, create a new rule set for the target ADaM domain (e.g. ADSL, ADAE, ADLB). Each rule specifies:

  • Source variable(s): The SDTM variable(s) to derive from.
  • Target variable: The ADaM variable to create or populate.
  • Logic: A conditional expression, lookup, or flag derivation.
  • Population flag: Which subjects the rule applies to (e.g. intent-to-treat, safety).

Run the pipeline

Click Run in the Rules tab. ADaM Builder applies all rules in order, creates the output dataset in the work library, and opens it in a new StatDataViewer tab for immediate inspection.

Run History stores each execution with a timestamp, rule set version, and output row count — so you can compare runs side by side using the Compare tool.

Decision Queue

When a rule cannot resolve automatically (e.g. conflicting source values, missing SDTM records), the record is placed in the Decision Queue. Review each queued item, choose a resolution, and re-run the pipeline with the decisions applied.

Tip — use with the Compare tool

Run ADaM Builder, then compare the output against a reference ADaM delivery using the Compare datasets tool. This gives you a line-by-line audit trail of where the new derivation differs from the reference.