# Preliminary Project Setup - Summary Tables

Generate a summary table for every variable set in the data set (excluding any that are marked as hidden)

This QScript generates a summary table for every question in the data file (excluding any that are marked as hidden).

## How to apply this QScript

• Start typing the name of the QScript into the Search features and data box in the top right of the Q window.
• Click on the QScript when it appears in the QScripts and Rules section of the search results.

OR

• Select Automate > Browse Online Library.
• Select this QScript from the list.

## Customizing the QScript

This QScript is written in JavaScript and can be customized by copying and modifying the JavaScript.

• Start typing the name of the QScript into the Search features and data box in the top right of the Q window.
• Hover your mouse over the QScript when it appears in the QScripts and Rules section of the search results.
• Press Edit a Copy (bottom-left corner of the preview).
• Modify the JavaScript (see QScripts for more detail on this).
• Either:
• Run the QScript, by pressing the blue triangle button.
• Save the QScript and run it at a later time, using Automate > Run QScript (Macro) from File.

### Customizing QScripts in older versions

• Create a new text file, giving it a file extension of .QScript. See here for more information about how to do this.
• Modify the JavaScript (see QScripts for more detail on this).
• Run the file using Automate > Run QScript (Macro) from File.

## JavaScript

// also imports QScript Utility Functions for inDisplayr
includeWeb("QScript Selection Functions");
includeWeb("QScript Functions to Generate Outputs");

const is_displayr = inDisplayr();
const data_file = requestOneDataFileFromProject(true);
// From here a user will have selected a file or only have one possible file in the document.
let questions = data_file.questions.filter(q => !q.isHidden).map(q => ({
primary: q, secondary: (/^Text/.test(q.questionType) ? "RAW DATA" : "SUMMARY")
}));
let page_names = questions.map(q => q.primary.name);
let report = createReport("Summary Tables", questions, page_names,
null, null, [], false, Infinity, false, false);

if (!is_displayr)
conditionallyEmptyLog('A group of summary tables has been added to the project');

let table = page.type === "Table" ? page : page.subItems.filter(i => i.type === "Table")[0];
if (table == null)
return;
let cell_stats = table.cellStatistics;
let column_stats = table.columnStatistics;
let row_stats = table.rowStatistics;
const qtype = table.primary.questionType;
if (["Pick One", "Pick Any", "Pick Any - Compact"].includes(qtype)) {
cell_stats.push("n");
cell_stats.push("Base n");
table.cellStatistics = cell_stats;
}
else if (["Ranking",  "Experiment", "Number", "Number - Multi"].includes(qtype)) {
cell_stats.push("Base n");
table.cellStatistics = cell_stats;
}
else if (["Pick One - Multi", "Pick Any - Grid", "Number - Grid"].includes(qtype)) {
row_stats.push("Row n");
column_stats.push("Column n");
table.rowStatistics = row_stats;
table.columnStatistics = column_stats;
}
return;
}