Applying Different Weights to Columns
Jump to navigation
Jump to search
Pages with syntax highlighting errors
Q Technical Reference
Q Technical Reference
Q Technical Reference > Setting Up Data > Creating New Variables
Q Technical Reference > Setting Up Data > Weighting
Q Technical Reference > Updating and Automation > JavaScript > Table JavaScript and Plot JavaScript > Table JavaScript and Plot JavaScript Examples Library
This example applies no weight to the first three columns of a table and then a weight to the final three.
This script will cause significance results to be displayed incorrectly. Please read Caveats for Table JavaScript before using this script.
Note: This code is outdated has been replaced by more advanced and maintained code in these two rules: Weight - Apply Weight to Column and Weight - Apply Weight to Column Span. Please use those rules instead. This code is intended only as a reference.
includeWeb('Table JavaScript Utility Functions');
// Specify the weights for individual columns of a table
// Note that the first column is column 0, the second 1, etc.
var weights_by_column = {
0: null,
1: null,
2: null,
3: 'ageWeight',
4: 'ageWeight',
5: 'ageWeight'};
// Get the table dimensions and data type
var num_rows = table.numberRows;
var num_cols = table.numberColumns;
var is_numeric = table.availableStatistics.indexOf("Average") > -1;
var is_categorical = table.availableStatistics.indexOf("Column %") > -1;
if (is_numeric)
prepareAllTableStats(table); // If table contains any numeric statistics, make sure all numeric stats are computed up front
// Prevent the user from displaying statistics that don't make sense on this table
var stats_to_prevent = ["p", "t-Statistic", "z-Statistic", "Column Comparisons", "Column Names",
"Columns Compared", "Index", "Total %", "% Row Responses",
"% Column Responses", "% Total Responses", ,
"Not Duplicate", "Base Population", "Corrected p", "Multiple Comparison Adjustment",
"Effective Base n", "Base n",
"Row %", "Row n", "Row Population"];
if (is_categorical)
stats_to_prevent.push("Standard Error"); // Don't show Standard error for categorical data as the 'Column Standard Error' is used instead
table.statistics.forEach(function (stat) {
if (stats_to_prevent.indexOf(stat) > -1) {
table.suppressOutput("It is not appropriate to show the " + stat + " on this constructed table. Remove it from the Statistics - Cells menu.");
return;
}
});
// Prevent marginal statistics
if (belowTableExists())
if (below_table.statistics.length > 0) {
table.suppressOutput("Statistics - Below are not available for this constructed table. Remove any selections from the Statistics - Below menu.");
}
if (rightTableExists())
if (right_table.statistics.length > 0) {
table.suppressOutput("Statistics - Right are not available for this constructed table. Remove any selections from the Statistics - Right menu.");
}
// For each column calculate the weighted data and copy statistics into table
for (var column = 0; column < table.numberColumns; column++) {
// Run the current table, with a different weight
var weight = weights_by_column[column];
var weighted_table = calculateTable(table.blue, table.brown,['!UseQFilters'], weight);
// Copy the weighted statistics for the column to the current table .
var stats = table.statistics;
for (var stat = 0; stat < stats.length; stat++) {
var weighted_values = weighted_table.get(stats[stat]);
var main_values = table.get(stats[stat]);
for (var row = 0; row < table.numberRows; row++)
main_values[row][column] = weighted_values[row][column];
// Set the altered values to the main table.
table.set(stats[stat], main_values);
}
}
// Turn off stat testing
if (table.cellSignificance) {
table.cellSignificance = Q.matrix(false, num_rows, num_cols);
table.hypothesisTestingEnabled = false;
}
See also
- Table JavaScript and Plot JavaScript for an explanation of how to run this code.
- Table JavaScript and Plot JavaScript Reference for technical information.
- Table JavaScript and Plot JavaScript Examples Library for other examples.
- JavaScript for information about the JavaScript programming language.
- QScript for tools for automating projects using JavaScript.
- JavaScript Variables for detail on how to create new variables in the Variables and Questions tab using JavaScript.
Pages with syntax highlighting errors
Q Technical Reference
Q Technical Reference
Q Technical Reference > Setting Up Data > Creating New Variables
Q Technical Reference > Setting Up Data > Weighting
Q Technical Reference > Updating and Automation > JavaScript > Table JavaScript and Plot JavaScript > Table JavaScript and Plot JavaScript Examples Library