A cross-tabulation is the table that answers "did the groups differ?" — the single most common question asked of survey data, and the one a frequency table cannot answer. Everything else about the technique follows from that.

This is a working guide: what the table is made of, how to read the significance marks that make it defensible, and the four mistakes that produce a table that is wrong in a way nobody notices.

What a cross-tabulation actually is

A frequency table tells you 62% chose "reliability". A cross-tabulation splits that 62% by a second variable — gender, region, customer tenure — and shows you that it is 71% among long-tenure customers and 48% among new ones. The first number describes your sample. The second tells you something you can act on.

The vocabulary is worth fixing early, because the same table has different names in different rooms. Statisticians call it a contingency table. Market researchers call it a crosstab, and call the whole deliverable banner tables or a tab book. They are the same object.

Two parts define it:

  • The banner — the variable across the columns. This is the cut: who you are comparing. Gender, age bracket, segment, wave.
  • The stub — the variable down the rows. This is what you are measuring: the answers to one question, one row per category.

A commercial tab book is one banner applied to every question in the study, so it is one table per question, all cut the same way. That is why a fifty-question survey produces a fifty-sheet workbook rather than fifty separate analyses.

How to read one

Here is the shape of a single table, with the parts labelled:

Q7. Main reason for choosing the brand
Significance: 95% confidence

                    Total      Male      Female     18-34      35+
                                 (A)        (B)       (C)      (D)
Base (N)              850       410        440       295       555
Reliability         62.0%     58.0%      65.7%     51.2%    67.7% C
Price               21.4%     26.1% B     17.0%     29.5% D   17.1%
Design               9.9%      8.5%      11.1%     13.2%      8.1%
Other                6.7%      7.4%       6.2%      6.1%      7.1%

The base is how many people the percentages are computed on — not how many people are in the study. A column whose base is 40 is describing forty people, however confident the percentage looks.

The letters are the significance test. Each column gets one. A letter inside a cell means this column is significantly higher than the column that owns that letter, at the stated confidence. So 26.1% B in the Price row means men chose price significantly more often than women. And 67.7% C means the 35+ group beat the 18-34 group on reliability.

Read the letters, not the gap. A four-point difference on a base of 800 can be real; a fifteen-point difference on a base of 30 usually is not. The letters encode that arithmetic so you do not have to redo it for every cell.

What the significance test is doing

Between two columns, the standard test is a two-proportion z-test: it asks how likely it is that two samples this different came from populations that are the same. At 95% confidence, a mark means that likelihood is under one in twenty.

Three things about that number are worth knowing before you put it in a deck.

It is a statement about sampling, not importance. With a large enough base, a two-point difference becomes significant. Significant and meaningful are different words; the table can only tell you the first.

Small bases should not carry letters at all. Below roughly thirty cases the test has almost no power, and any mark it produces is noise with a decoration. Good tabulation suppresses letters under a threshold and flags the column instead.

Many comparisons manufacture findings. A fifty-question book with a six-column banner runs thousands of tests. At 95%, one in twenty comes back significant by chance alone — so a handful of the marks in any large tab book are accidents. This is why researchers form the hypothesis before reading the tables, not after. Some houses apply a Bonferroni correction; most do not, and instead treat isolated marks with suspicion and repeated patterns as findings.

Four mistakes that survive review

1. Reading percentages off the wrong base

Column percentages and row percentages answer different questions. "62% of women chose reliability" and "54% of those who chose reliability are women" are both true and are not interchangeable. Most tab books are column-percentage by convention; a table that mixes the two without saying so is unreadable.

2. Treating multi-response questions like single-response ones

When respondents can pick several answers, the column sums past 100% and the base is respondents, not mentions. A table that divides by mentions produces percentages that look tidy and describe nothing anyone asked about.

3. Letting the base drift without noticing

Filtered questions change the base — "asked only of those aware of the brand" is a different universe from the full sample. The base row is the only thing on the sheet that reveals it. When the base moves between two tables, comparing their percentages directly is comparing two different populations.

4. Cutting until something turns significant

Adding banner points until a difference appears is the most common way to manufacture a finding from clean data. The remedy is procedural rather than statistical: decide the banner before the fieldwork closes, and treat anything found by extra cutting as a hypothesis for the next wave, not a result in this one.

Weighting, briefly

When the sample does not match the population — too many young respondents, too few in one region — weights correct the imbalance by giving each respondent a multiplier. The percentages then describe the population rather than the sample.

The cost is precision. A weighted base of 850 behaves statistically like a smaller unweighted one, and the significance test has to use that effective base rather than the headline number. A tab book that weights the percentages but tests on the raw base overstates its own certainty. If a supplier cannot tell you which base their letters used, that is the question to press.

Cross-tabulation in SPSS

SPSS is where most of these tables get made, so it is worth being precise about which menu does what — and about the two settings that decide whether the table you produce is the one you meant.

The basic crosstab

Analyze → Descriptive Statistics → Crosstabs. Put the question you are measuring in Row(s) and the banner variable in Column(s). That alone gives you counts, which almost nobody wants on their own.

Two dialogs turn it into a readable table:

  • Cells… → Percentages → Column. This is the setting people forget. Without it you get raw counts; with Row ticked instead you get a table that answers a different question entirely — see the first of the four mistakes above.
  • Statistics… → Chi-square tells you whether the table as a whole shows an association. It does not tell you which columns differ, which is usually what you actually need.

Getting the significance letters

The column letters described earlier are not in the Statistics dialog, which is why analysts often assume SPSS cannot produce them. They live in Cells… → Z-test → Compare column proportions, with an optional Adjust p-values (Bonferroni method) checkbox beside it.

That checkbox is a real decision, not a formality. Leaving it off matches the convention of most tabulation software and most tab houses; turning it on makes each mark harder to earn, and is the defensible choice when you are about to read a large book looking for differences rather than testing one hypothesis you stated in advance.

Frequency tables

For the ungrouped version — one variable, no banner — it is Analyze → Descriptive Statistics → Frequencies. Useful for checking a variable before you cross it by anything: a frequency table is where you notice that a category you expected to be large has eleven people in it, or that the missing count is higher than the questionnaire implies.

Where SPSS stops being the right tool

None of the above is a criticism of SPSS. For one table, or for a piece of analysis you are reasoning about as you go, the Crosstabs dialog is exactly right and the output is trustworthy.

The friction starts when the deliverable is a book. A fifty-question study with one banner is fifty trips through the same dialog, with the same four settings re-selected each time, and the output pasted into Excel and reformatted afterwards. Custom Tables (Analyze → Tables → Custom Tables) is SPSS's own answer to this and it is considerably better than repeating Crosstabs, but building the banner there is its own afternoon, and the layout has to be rebuilt whenever the banner changes.

That is the gap dedicated tabulation software exists to fill, and the reason market-research shops buy it despite already owning SPSS licences: not better statistics — the same statistics, applied to fifty questions at once and formatted for someone who is not going to open SPSS.

If you want to see that shape without installing anything, our free crosstab tool takes a .sav file directly: pick the banner variable, and it returns an Excel workbook with one sheet per question, column percentages, bases and 95% significance letters already applied. No SPSS licence required. Use a past study or a test file rather than live client data.

Producing them

SPSS, R and Stata all cross-tabulate, and for one table they are fine. The reason market-research shops use dedicated tabulation software is the shape of the real job: one banner, fifty questions, significance on every cell, delivered as a formatted workbook a client can read without the analyst present. Doing that by hand is not analysis, it is assembly.

If you have a .sav file and want to see the shape of that deliverable, our free cross-tabulation tool computes it on our servers: pick the banner variable, and it returns an Excel workbook with one sheet per question, bases, column percentages and 95% significance letters. No install and no account. Use a past study or a test file rather than live client data.

Cross-tabulating open-ended questions

A cross-tabulation needs a stub with categories. A closed question has them built in; an open-ended one only has them once the answers are coded. So the table for "what do you like least about the brand?" is a cross-tab of the codes against the banner, and it is only as sound as the codebook behind it.

Two properties of coded open ends change how you read the table. Coding is usually multi-response — one answer can carry two ideas — so columns add up to more than 100% and the base must be respondents, not mentions (mistake 2 above). And a code that appears in three answers produces a row with a tiny base, which is why letters on thin rows deserve the same suspicion as letters on thin columns.

Frequently asked questions

What is cross-tabulation in simple terms?

It is a table that splits the answers to one question by the groups defined in another — for example, brand preference by age bracket. Each cell shows how many respondents (or what share of the column) fall in that combination, so you can see whether groups answer differently.

How is a cross-tabulation different from a pivot table?

Structurally they are close: both count one variable against another. The difference is what surrounds the count. A market-research crosstab is expected to show the base for every column, use column percentages by convention, handle multi-response questions, and carry significance marks. A spreadsheet pivot table does none of that on its own.

Do I need a chi-square test for a cross-tabulation?

Chi-square tests whether the table as a whole shows an association between the two variables. It does not say which columns differ. For a tab book, column-proportion tests (the letters) are what readers use; chi-square is more useful when you are testing one stated hypothesis on one table.

What base size is too small to trust?

Below roughly thirty cases a significance test has very little power, so marks on those columns are noise. Report the percentage if you must, but flag the column as a low base instead of reading differences into it.

Should I use column or row percentages?

Column percentages are the convention in tab books: each column adds to 100% and answers "of the people in this group, how many chose this?". Use row percentages only when the question is the reverse, and label the table so nobody reads it the other way.

How many banner columns are too many?

There is no fixed limit, but every extra column multiplies the number of tests, and with them the number of marks that appear by chance. Decide the banner before fieldwork closes and keep it to the cuts the client will actually use.

Where this fits

Cross-tabulation is what happens after the data is coded. Closed questions arrive ready; open-ended ones do not — "what do you like least about the brand?" has to be turned into categories before it can be a stub at all. That step is its own discipline, with its own failure modes, and it is covered in our guide to survey coding and in open-end coding in market research.

A tab book is only as good as the codeframe underneath it. A beautifully tested table built on categories that merge two different complaints is a precise answer to the wrong question.

If the two steps are done by different suppliers, that codeframe gets rebuilt in the handover — which is where it drifts. We now do both in one pass: see survey data processing.