Your spreadsheet will happily average the ZIP code column
Open a spreadsheet and every column looks the same. Numbers are numbers, they line up on the right, and one function gives you a mean. So what happens when you average the ZIP code column?
The mean of 90210 and 10001 is 50105.5. Nothing errors. Nothing is highlighted in red. You get a clean number with a decimal point — and it refers to nothing at all.
Being stored as a number and being safe to calculate with are two completely different things. Two columns can both hold "numbers" and still differ in what they let you claim.
| Example | Same or different? | Bigger or smaller? | Bigger by how much? | How many times bigger? |
|---|---|---|---|---|
| ZIP code 90210 | yes | no | no | no |
| Satisfaction, 1–5 | yes | yes | no | no |
| Temperature, 20°C | yes | yes | yes | no |
| Body weight, 60 kg | yes | yes | yes | yes |
The top row is the ZIP code you just averaged. Taking a mean is using the "bigger by how much" column — and for ZIP codes that column is closed.
The third row is worth a second look. 20°C is not twice 10°C. Zero degrees Celsius is not "no heat at all"; it is just the temperature at which water freezes, so there is no anchor from which to count multiples. Zero kilograms, by contrast, really is nothing — which is why 60 kg genuinely is twice 30 kg.
Those four rungs are the levels of measurement. Deciding which rung each column sits on, before you touch anything else, is very nearly the whole job of choosing an analysis.
The key question
What am I allowed to say about this number — same? bigger? bigger by how much? how many times bigger?
How much a number is promising you
Qualitative data sorts things into groups; quantitative data measures how much of something there is. Blood type and region are qualitative. Height and revenue are quantitative. You count the first kind and you measure the second.
Quantitative data then splits again, into discrete and continuous. Number of children is discrete — there is nothing between two and three. Body weight is continuous, because there are infinitely many values between 62.4 kg and 62.5 kg.
The more useful distinction is the four-rung ladder Stevens laid out. Each rung up, the number promises you more.
Nominal
names onlyCategories with no order. Blood type, region, brand.
Ordinal
ranked gaps unknownOrder is real, spacing is not. Rank, grade, satisfaction.
Interval
zero is arbitraryDifferences mean something, ratios do not. °C, year, IQ.
Ratio
true zeroZero means none. Length, weight, revenue, count.
Every rung unlocks one more operation, and the unlocks are cumulative: anything legal lower down stays legal higher up, never the reverse.
| Level | = ≠ | < > | + − | × ÷ | Centre |
|---|---|---|---|---|---|
| Nominal | ✓ | ✗ | ✗ | ✗ | Mode |
| Ordinal | ✓ | ✓ | ✗ | ✗ | Mode, median |
| Interval | ✓ | ✓ | ✓ | ✗ | + arithmetic mean |
| Ratio | ✓ | ✓ | ✓ | ✓ | + geometric mean, CV |
Zero is the only thing separating interval from ratio
Zero degrees Celsius is not the absence of temperature — it is the point where water freezes, a spot somebody picked. That is why 20° cannot be twice 10°. Revenue of zero, on the other hand, really is nothing, so $200m genuinely is twice $100m.
Levels of measurement
4
Nominal, ordinal, interval, ratio
Levels that allow a mean
2
Interval and ratio only
Levels that allow a ratio
1
Ratio only
The level picks the method before you do
"Which test should I use?" is almost always answered by the measurement level of the variables. This is precisely why software cannot choose for you: from the digits alone, nothing distinguishes a ZIP code from a revenue figure.
| Level | Chart | Summary | Typical test |
|---|---|---|---|
| Nominal | Bar, pie, mosaic | Counts, proportions | Chi-square |
| Ordinal | Stacked bar, ordered bar | Median, quartiles | Mann–Whitney, Kruskal–Wallis |
| Interval | Histogram, line, box | Mean, SD | t-test, ANOVA |
| Ratio | All of the above, plus log scale | + CV, geometric mean | + ratio and elasticity models |
Assume the wrong level and the computation still succeeds. That silence is the dangerous part. The output is a plausible-looking number, so nobody thinks to question it.
| The mistake | What you get | What it actually is |
|---|---|---|
| Mean of a ZIP code column | 50105.5 | A place that does not exist |
| Mean of sex coded 1 / 2 | 1.43 | The share of 2s, arrived at by accident |
| Correlating customer ID with revenue | r = 0.31 | Older accounts spend more |
| Mean of a satisfaction rank | 2.7th | Something between 2nd and 3rd |
| Regressing on a colour code | β = 1.2 | Renumber the colours, get a new answer |
Age is ratio; bucket it into 20s, 30s and 40s and it becomes ordinal. You lose information, but nothing breaks. The reverse is impossible. From "in their 20s" you cannot recover the age, and the moment you assume "call it 25" you have invented data that was never collected.
What bucketing costs you
Cutting a continuous variable into bins throws away all the variation inside each bin. Bucket age by decade and a 29-year-old becomes identical to a 20-year-old and different from a 30-year-old. In a regression this visibly reduces power.Unless a bin has a real-world meaning, keep the raw values.
Three questions settle every column
Ask them in sequence and every column lands on exactly one rung.
The test that never fails
There is an easier way to ask the third question: "does the multiple survive a change of units?" Convert 20°C and 10°C to Fahrenheit and you get 68°F and 50°F — the multiple has changed. Convert 2 kg and 1 kg to pounds and it is still exactly double.
Almost every real-world mistake happens in one of two places: columns stored as numbers that are not quantities at all, and columns that look interval but are only ordinal.
| Column | Looks like | Actually | What breaks |
|---|---|---|---|
| Postal code | Number | Nominal | The mean of two postal codes is a third place |
| Sex coded 1 / 2 | Number | Nominal | A mean of 1.4 has no referent |
| Customer ID | Number | Nominal | Correlating it with revenue finds signup order |
| Likert 1–5 | Interval | Ordinal | The gap 1→2 is not the gap 4→5 |
| Year (2024) | Ratio | Interval | 2024 is not twice 1012 |
| Temperature °C | Ratio | Interval | 20° is not twice as warm as 10° |
| Phone number | Number | Nominal | Sorting it is meaningless |
| Star rating 1–5 | Interval | Ordinal | Two shops averaging 3.0 can be opposites |
A "1 = strongly disagree … 5 = strongly agree" scale is, strictly, ordinal: nothing guarantees that the distance from 1 to 2 matches the distance from 4 to 5. And yet everybody averages them. So what should you actually do?
| Situation | Recommended | Why |
|---|---|---|
| A single item | Median plus the response distribution | One item gives a mean too little to stand on |
| Several items summed | A mean is defensible | Summed scores behave close to interval |
| Comparing two groups | Mann–Whitney | Uses only the ordering, so it assumes less |
| Reporting to stakeholders | Mean plus top-box share | A mean alone hides the shape |
| Five points or fewer | Treat the mean carefully | Fewer levels, more distortion |
The question is not really whether to use a mean. It is whether to use only a mean. Show the distribution alongside it and most of the objection evaporates.
Write down the level of every column the moment the data lands, and every later decision falls out of that table on its own.
| Column | Level | Safe summaries | Watch out for |
|---|---|---|---|
| Customer ID | Nominal | Distinct count | Never treat as a quantity |
| Signup region | Nominal | Counts, shares | One-hot encode |
| Tier (basic / silver / gold) | Ordinal | Median, distribution | Order-preserving encoding |
| Signup year | Interval | Differences, trend | Do not divide one year by another |
| Lifetime spend | Ratio | Mean, total, ratios | Consider a log transform |
What a 3.0-star average hides
Three restaurants on a delivery app hold an average rating of exactly 3.00, from thirty reviews each. On the app they are indistinguishable.
| Shop | 1 · 2 · 3 · 4 · 5 | Mean | SD | % giving 5 |
|---|---|---|---|---|
| Shop A(Everyone said 3) | 0 · 0 · 30 · 0 · 0 | 3.00 | 0.00 | 0% |
| Shop B(Clustered on 3) | 3 · 6 · 12 · 6 · 3 | 3.00 | 1.11 | 10% |
| Shop C(Loved or hated) | 15 · 0 · 0 · 0 · 15 | 3.00 | 2.03 | 50% |
Shop A disappointed nobody and delighted nobody. Shop C is half five-star, half one-star. Filing those two under "a three-star place" is plainly wrong — and that is exactly what the mean does.
A distribution like C's usually means something specific: quality that depends on which dish you order, food that survives some delivery zones and not others, or a batch of planted reviews. Reading only the mean, you would have filed the whole thing under "average".
The lesson here
Averaging an ordinal scale is dangerous not because the arithmetic fails but because it flattens genuinely different distributions into the same number. Print the top-box share next to the mean and the three restaurants separate immediately.
Sort the questions on an ordinary customer survey by level, and the available analyses assign themselves.
| Question | Level | What you can run |
|---|---|---|
| Sex | Nominal | Counts, crosstabs, chi-square |
| Region | Nominal | Counts, map visualisation |
| Age bracket (20s / 30s / …) | Ordinal | Median, ordinal regression |
| Age in years | Ratio | Mean, correlation, regression |
| Income band | Ordinal | Median, nonparametric tests |
| Likelihood to reorder (1–5) | Ordinal | Median, Mann–Whitney |
| Days since last visit | Ratio | Mean, survival analysis |
| Number of visits | Ratio (discrete) | Mean, Poisson regression |
Notice that "age bracket" and "age in years" sit side by side. Same underlying fact, different level, different toolkit. Always collect the raw age if you can — bucketing it later is free, and unbucketing it is impossible.
Misconception 1
❌ If it is stored as a number, it is quantitative.
ZIP codes, phone numbers, customer IDs and squad numbers are all stored as numbers and all nominal. What settles the level is not the storage type but what the digits stand for.
Misconception 2
❌ If the scale has a zero, it is a ratio scale.
There is still temperature at 0°C, and time still passed in the year 0. What you need is not the digit zero but a zero that means the quantity is absent.
Misconception 3
❌ You must never average an ordinal scale.
Summed multi-item scales behave close enough to interval that published research averages them routinely. The real problem is letting a single item's mean be the only thing you report. Show the distribution and the objection mostly goes away.
Misconception 4
❌ Bucketing a continuous variable makes it easier to interpret.
It does — at the cost of information and statistical power. Worse, the conclusion can turn on where you put the cut points, which leaves room to land on whichever answer you were hoping for.
Find out where each scale keeps its zero
Below, three units are drawn along a single physical axis. Choose temperature and their three zeros land in three different places; choose weight and they land on the same one. The B ÷ A column is the consequence.
Each scale drawn on one physical axis. The dot is where that unit calls zero.
| Unit | A | B | B ÷ A |
|---|---|---|---|
| Kelvin (K) | 283.15 | 293.15 | 1.035 |
| Celsius (°C) | 10.0 | 20.0 | 2.000 |
| Fahrenheit (°F) | 50.0 | 68.0 | 1.360 |
The three units disagree on the ratio, so the ratio is a property of the unit rather than of the temperature. Whichever number you quote, someone using another unit gets a different one.
A ratio means something only when zero means "none at all".
Learning points
A ratio means something only when zero means "none at all".
On an interval scale differences remain perfectly meaningful — division is the only casualty.
If "twice as much" changes when you change units, it was a claim about the unit, not the data.
Nominal & ordinal
Labels, and labels you can rank
Interval
Even gaps, arbitrary zero
Ratio
Zero means none at all
The question is not "is this column numeric?"
It is "what am I allowed to claim with these numbers?" The arithmetic succeeds on any column. Whether the answer means anything is something only the measurement level can tell you.
Measurement level is settled once, right after the data loads, and every subsequent choice follows from it. In SKARI you can check the following alongside.
Data profile
Column Types, Unique Counts, Missing Map
Categorical analysis
Frequency Table, Crosstab, Chi-square
Ordinal analysis
Mann–Whitney, Kruskal–Wallis, Ordinal Regression
Encoding
One-Hot, Ordinal, Target Encoding
Once this clicks, you can answer questions like these.