Export your data for analysis
What is in the CSV, Excel workbook and PDF report, how scales are coded, and how to load the data into SPSS or R.
What is in the CSV, Excel workbook and PDF report, how scales are coded, and how to load the data into SPSS or R.
Surbee exports your responses in a format statistics packages expect: one row per respondent and one column per question. This article explains each format, every column, and how to get the file into SPSS or R.
.xlsx file..csv file.Status filters in Results do not change the export. Every response in the date range is included, and you can filter on the Status column afterwards.
The CSV and the Responses sheet of the workbook have the same columns. Each row is one respondent.
The first columns describe the response:
completed, partial, abandoned or declined. See below.Yes if Cipher flagged the response, otherwise No.Direct.After these come the answers, one column per question, in survey order. Question columns are numbered Q1, Q2 and so on, followed by the question text.
completed: answered every question.partial: left some questions blank.abandoned: answered less than a third of the questions.declined: ended the survey through an End survey rule, for example by
choosing I do not agree on a consent page. The row holds only the
answers given up to that point.Status counts answered questions, so a question a respondent never saw because of branching counts as blank.
Each statement of a Likert question, and each row of a Matrix question, gets its own column, numbered Q4.1, Q4.2 and so on. The answer is coded as a number from 1 to the number of scale points, in the order the scale is shown. On a 5-point agreement scale, for example, 1 means Strongly disagree and 5 means Strongly agree.
In the CSV and the Responses sheet, the column header carries the question, the statement and the scale endpoints, so the coding is visible without the codebook. Blank means the statement was not answered.
A Matrix question that allows more than one answer per row keeps the answer labels, separated by semicolons, because a single code cannot hold several answers.
A Repeating group question, where respondents add as many entries as they need, expands to one column per entry per field: for example Q3.1 Name, Q3.1 Role, Q3.2 Name, Q3.2 Role. The number of entries matches the most any respondent submitted, so there are no empty columns beyond that.
Single-choice questions hold the chosen label. Checkboxes questions hold every chosen label, separated by commas. Ranking questions hold the items in the order the respondent ranked them. Text answers are exported as written.
The workbook has four sheets:
1 = Strongly disagree | 2 = Disagree),
how many respondents answered and skipped it, and its margin of error. Below
the variables, Survey totals lists the rows in the export, responses
collected, completion rate, median and mean duration, average Cipher score,
flagged and straightlined counts, and the overall margin of error.PDF report opens a formatted report in a new browser tab and brings up the print dialog. Choose Save as PDF as the destination to keep a copy. The report includes the headline numbers and every question's distribution, plus Surbee's AI summary and themes where available. Treat the AI-written parts as a starting point for your own reading of the data.
If nothing happens, your browser may have blocked the new tab. Allow pop-ups for Surbee and try again.
Two columns make exclusions straightforward:
declined to remove participants who did not consent or
were screened out.Yes, or
set your own threshold on Cipher score.Decide your exclusion rules before you look at the results, and report them in your write-up. See Response quality in research studies.
The CSV is UTF-8 with a byte order mark, which keeps accented characters intact in Excel. Tell R about it when you read the file:
d <- read.csv("my-study-responses-2026-10-11.csv",
fileEncoding = "UTF-8-BOM", check.names = FALSE)
clean <- subset(d, Flagged != "Yes" & Status != "declined")
check.names = FALSE keeps the column names exactly as exported, so refer to
them with backticks or double brackets, for example d[["Cipher score"]].
To read the workbook instead, use the readxl package:
library(readxl)
d <- read_excel("my-study-insights-2026-10-11.xlsx", sheet = "Responses")
codebook <- read_excel("my-study-insights-2026-10-11.xlsx", sheet = "Codebook")
VALUE LABELS Q4_1 TO Q4_8
1 'Strongly disagree' 2 'Disagree' 3 'Neutral' 4 'Agree' 5 'Strongly agree'.
Flagged <> "Yes" AND Status <> "declined".