Skip to content
← Browse docs
Reference

Expressions

Every function, and how to refer to variables and cells.

The basics #

An expression is a function name with what it applies to in parentheses, combined with arithmetic where you need it.

  • Function names ignore case: MEAN, Mean and mean are the same function.
  • Some functions have other names, such as avg for mean; each function below lists its own.
  • While you type, the editor suggests the functions and variables that fit, shows the arguments a function takes, and offers a fix for a mistake. fx (⌘/) opens the function browser.
Examples text
top2box(satisfaction)
mean(q1, q2, q3)
[Evening] - [Morning]

Referring to things #

  • A variable by its name: satisfaction. A question group by its name; a function that takes several variables reads all of its members.
  • Brackets mean different things in different places: in a formula cell they name a cell; in a table pill they choose parts of a group.
  • In a formula cell, a cell by its row and column labels: [Hunger, Morning]. In a formula column, [Morning] is this row's Morning cell; in a formula row, [Hunger] is this column's Hunger cell.
  • A cell in another table: Table 2[Hunger, Morning].
  • A range of cells, as a function argument: mean([Hunger:Convenience, Morning]).
  • A label containing , : [ ] " or $ goes in quotes: ["Yes, often", Morning]. $ before a part keeps it in place when a formula is filled.
  • When two rows share a label, the editor offers each by its identity, {…}, so the formula stays on the row you meant.

Operators #

+ - * /
Arithmetic, with * and / before + and -. Works everywhere.
( )
Group a calculation. Works everywhere.
%
Remainder. Formula cells.
== != < <= > >=
Compare a value, as in age >= 18. Table pills and derived variables.
and or not
Combine conditions; & and | mean and and or. Table pills and derived variables.

Scores #

Turn answers into scores: box scores, ranks, standard scores and transforms.

top2box(source, max=5)
Flag the top two response values as 1, others 0. Works in table pills and derived variables.
rank(source, pct=false, ties="Average")
Per-row ascending rank with a choice of tie convention (default average). Works in table pills and derived variables.
math_transform(source, kind=…)
Row-wise log / exp / logit applied to a numeric source. Works in table pills and derived variables.
reverse_likert(source, max=…)
Reverse a Likert-coded source on a 1..=max scale. Works in table pills and derived variables. Also written reverse.
zscore(source)
Per-row z-score, optionally grouped by a categorical variable. Works in table pills and derived variables.
box_score(source, n=2, direction="Top")
Flag the top or bottom N value-label codes of an ordinal source as 1. Works in table pills and derived variables.
percentile(source, position, a, [b])
Per-respondent 0/1 flag based on the percentile rank of the numeric source. Works in table pills and derived variables. Also written pctl.
quartile(source)
Cut a numeric column into four equal-population bands (Q1..Q4) by percentile rank. Works in table pills and derived variables.
quintile(source)
Cut a numeric column into five equal-population bands (Quintile 1..5) by percentile rank. Works in table pills and derived variables.

Recode #

Regroup or rebuild values: bands, recodes and conditional assignments.

bin(source, bands…)
Cut a numeric column into ordered bands (cut-point list or labelled-arm form). Works in table pills and derived variables.
recode(source, arms…)
Map source codes to labelled buckets (list form or labelled-arm form). Works in table pills and derived variables.
cast_copy(source, target_type=…)
Duplicate a variable and cast it into a supported target type. Works in table pills and derived variables.
coalesce(sources…)
First non-missing value across N parallel source columns. Works in table pills and derived variables.
case_when(cases=…)
Assign each row the first arm whose predicate is truthy. Works in table pills and derived variables. Also written casewhen.
value_range(source, min, max)
Per-respondent 0/1 flag: 1 iff the source value is within [min, max] inclusive. Works in table pills and derived variables. Also written range.

Select #

Keep or drop respondents and categories.

select(source)
Keep only rows whose value is in codes; others become missing. Works in table pills and derived variables.
exclude(source, codes=…)
Drop rows whose value is in codes (they become missing); others pass through. Works in table pills and derived variables.
eligible_if(expr=…)
Boolean eligibility mask from a predicate expression. Works in table pills and derived variables. Also written eligible.
pattern(source, regex)
Per-respondent 0/1 flag: 1 iff the source's text (categorical value label or raw text response) matches the regex; nothing-to-match leaves the base, not a No. Works in table pills and derived variables. Also written match.

Summaries #

Summarise several variables per respondent. In a formula cell, the same functions summarise cells.

mean(inputs…)
Row-wise mean across two or more parallel source columns (listwise on missing). Works in table pills, derived variables and formula cells. Also written avg, average.
sum(inputs…)
Row-wise sum across two or more parallel source columns (listwise on missing). Works in table pills, derived variables and formula cells.
product(inputs…)
Row-wise product across two or more parallel source columns (listwise on missing). Works in table pills and derived variables.
min(inputs…)
Row-wise minimum across two or more parallel source columns (listwise on missing). Works in table pills, derived variables and formula cells.
max(inputs…)
Row-wise maximum across two or more parallel source columns (listwise on missing). Works in table pills, derived variables and formula cells.
count(source)
Row count of the source column, broadcast as a constant. Works in table pills and derived variables.

Combine #

Combine variables: nets, interactions and multi-select indicators.

interact(left, right)
Cross-product of two categorical variables. Works in table pills and derived variables.
multi_select_to_binary(source)
Materialise N binary 0/1 indicators from a categorical source (one per option). Works in table pills and derived variables.
net(expr=…)
Boolean mask from a predicate expression, optionally restricted by universe. Works in table pills and derived variables.
theme_group_publish(source_variable, themes=…, coding_frame_id=…, coding_frame_name=…, codebook_revision=…, classification_result=…)
Publish coded text themes as binary indicator variables. Works in table pills and derived variables.

Analyses #

Multivariate analyses that add one variable per respondent, such as a segment.

pca(variables…, auto_variance_threshold=0.8, rotation="None", rotation_max_iterations=100, parallel_analysis_reps=0, parallel_analysis_percentile=0.95)
Principal component analysis. Works in table pills and derived variables.
kmeans(variables…, k=…, max_iterations=300, n_init=5, gap_bootstraps=0, stability_resamples=0, seed=42)
K-means clustering via Lloyd's algorithm. Works in table pills and derived variables.
lca(indicators…, classes=…, max_iterations=300, restarts=5, smoothing_alpha=0.01, convergence_threshold=0.000001, seed=42, output="Posteriors", blrt_bootstrap_reps=0)
Latent Class Analysis via EM. Works in table pills and derived variables.
conjoint(variables…, none=false, coding="Effects", iterations=1000, burn_in=500, seed=42, prior_df_offset=5, use_asc=false, output="Raw", thin=1, n_mixture_components=1, dual_response_none=false)
Choice-based conjoint via Hierarchical Bayes MNL. Works in table pills and derived variables.
maxdiff(variables…, mode="Sequential", iterations=10000, burn_in=5000, seed=42, prior_df_offset=5, mh_scale=0.1, response_model="ScaleHeterogeneity", scale_prior_sd=0.75, output="Raw")
MaxDiff (best-worst scaling) via Hierarchical Bayes MNL. Works in table pills and derived variables.
efa(variables…, rotation="Promax", correlation="Auto", parallel_analysis_reps=100, parallel_analysis_percentile=0.95, score_method="Regression", extraction="PrincipalAxis", rotation_max_iterations=100)
Exploratory factor analysis (principal-axis or maximum-likelihood). Works in table pills and derived variables.
drivers(outcome, drivers…, bootstrap_reps=100, shapley_samples=2000)
Key-driver analysis (correlation/regression/Johnson/Shapley). Works in table pills and derived variables.
typing_tool(target, predictors…, l2_penalty=1, min_hit_rate=0.7, max_iter=200, lr=0.01)
Multinomial-logit classifier (predicts a categorical target). Works in table pills and derived variables.
ranking(variables…, iterations=10000, burn_in=5000, seed=42, prior_df_offset=5, mh_scale=0.1)
Hierarchical Bayes Plackett-Luce ranking analysis. Works in table pills and derived variables.
correspondence(variables…, dimensions=2, normalization="Symmetric", mca_matrix="Indicator", adjusted_inertia=false)
Correspondence Analysis (simple CA / MCA via eigendecomposition). Works in table pills and derived variables. Also written ca.
conjoint_lc(variables…, k=…, none=false, coding="Effects", output="Class", max_iterations=100, restarts=10, convergence_threshold=0.000001, seed=42, use_asc=false)
Latent Class CBC Conjoint via EM. Works in table pills and derived variables.

Next steps