River
Y CombinatorBacked by Y Combinator

Research & PolicyFree

Qualtrics Export Cleaning for Analysis

Metadata split from responses, the recode values checked against the instrument they came from, and every excluded row logged as a rule with its count.

Start here

River reads the export exactly as the platform produced it, separates the response columns from the metadata columns, and checks the numbers against the instrument they came from before anything is computed. Then it applies your exclusions as numbered rules, each with the rows it removed, so the analysable row count derives from the raw export by arithmetic. The cleaned dataset comes back as a Sheet and the decisions as a Doc, with one numbered rule per exclusion.

The file is not a dataset yet. Qualtrics documents that CSV and TSV files come with 3 rows of headers and that respondent data starts on the fourth row. A naive read therefore puts question text into your first two data rows and turns every numeric column into text. Preview and test responses ship in the same file, separable only by a status code most cleaning guides never mention, and four direct identifiers travel with them by default.

Built for the analyst handed a 137-column export they did not design, the doctoral candidate whose survey closed last night, and anyone whose first summary statistic looked wrong and could not say why. Run it before any recoding of your own. The instrument pack is where the response formats were decided, the cleaning record carries the same discipline into the wider dataset, and the methods section reads the row counts this produces. More research packs sit alongside.

A five-point scale that exports as 1, 2, 3, 6, 7

The dangerous quirk is not the headers, it is the numbers. Qualtrics exports recode values, and its own documentation warns that adding and removing answer choices can cause your Recode Values to become out of order. In one illustrative workforce survey, three of eight wellbeing items were revised during drafting, so a five-point scale exports as 1, 2, 3, 6 and 7. The numbers are valid, they load without warning, and they are not the scale anybody designed.

Work the arithmetic. On those three items the response distribution runs 8, 17, 27, 33 and 15 per cent across the five points, so the true item mean is 3.30 and the exported mean is 4.26. Averaged across all eight items the scale reads 3.66 instead of 3.30. Wave 3 scored 3.34, so the export says wellbeing rose 0.32 points and the corrected data says it fell 0.04. The headline finding changes direction.

A second export setting writes a sentinel straight into the data: seen but unanswered questions can be recoded as -99, and 892 cells across the file hold it. On one wellbeing item, 71 of those cells drag the mean from 3.30 to 1.17. ICPSR's guidance is that there are at least six missing data situations, each of which should have a distinct missing data code. An export option that writes one number for all of them is not a missing code.

How it works

  1. Send the export

    The file exactly as the platform produced it, plus your instrument or codebook if you have one.

  2. Split the columns

    Responses from metadata, with the direct identifiers listed and held out of the analytic file.

  3. Check the codes

    Every recode value against the instrument, and every sentinel the export settings wrote into the data.

  4. Log the exclusions

    One numbered rule per exclusion with its row count, reconciling to the analysable total.

What you get

  • The cleaned dataset as a Sheet, with value labels applied and metadata in its own tab
  • Every recode value checked against the instrument, and every mismatch named before a mean is computed
  • The exclusion log as a Doc: one numbered rule per exclusion with the rows it removed
  • Platform metadata separated rather than deleted, because it is the evidence for your exclusion rules
  • Direct identifiers stripped from the analytic file and listed, so you know what shipped in the export
  • Every export-written sentinel found and named, rather than averaged into your results

Common questions

Which platforms does it handle?

Qualtrics and SurveyMonkey most often, plus REDCap, Google Forms, Alchemer and anything that produces a delimited file. The platform matters because the quirks are platform-specific and documented, so the first thing it establishes is which platform produced the file and which export options were set.

How does it know what my scale codes should be?

It reads them from the platform's own numbering rather than assuming a scale runs from one. A five-point item exporting as 1, 2, 3, 6, 7 loads without a warning and produces a valid-looking mean, so the check is against your instrument or codebook. Send either one and the comparison is exact.

Does it delete responses it thinks are bad?

No. Every excluded row is a numbered rule with the count it removed, and the counts reconcile to the difference between the raw export and the analysable file. If the column does not close, rows left for a reason nobody recorded, and the log says so rather than adjusting a number.

What happens to all the platform metadata columns?

Separated into their own sheet rather than deleted, because response duration, progress and status are the evidence for your speeder and incomplete rules. What does get stripped from the analytic file are the direct identifiers: recipient name, email, IP address and geolocation all ship by default.

Can it find straight-liners and speeders?

Yes, and it says which kind. A straight-line response through an eight-item block, a completion time under a fifth of the median, and a failed attention check are three different signals, each with its own rule and count. You set the thresholds and nothing is removed without one.

My export has labels instead of codes. Is it ruined?

Then it reports what cannot be recovered instead of guessing. An export taken with choice text rather than numeric values has no codes; an export with numeric values has no labels. Re-exporting is the cheap fix and it says so. Where that is impossible, the loss becomes a line in the decisions document.

What do I actually get back?

It writes the cleaned Sheet with value labels applied and metadata separated, plus a Doc holding every rule, its count and its reasoning. That Doc is what a methods section needs, and the methods writer reads it directly rather than asking you to describe what you did. The analysable count it lands on is the base the results report computes every percentage against.

Qualtrics Export Cleaning for Analysis

Fill in the form and your workspace opens with the work already underway.