Position-Taking in House Primaries: 14 Issues, 1,662 Candidates

What candidates would not say, and the code that records the silence

Democracy’s Data

Last updated September 15, 2026 at 4:42p EDT

A primary — the election in which a party’s voters choose its nominee — is supposed to let those voters read the candidates and choose. Is there anything to read? In 2014, 1,662 people ran in a congressional primary, and a team at the Brookings Institution opened every one of their campaign websites. They wrote down where each candidate stood on fourteen issues of the day: immigration, the Affordable Care Act, guns, abortion, the minimum wage, climate change and eight more.

222 of those candidates said nothing about any of the fourteen. That is not a gap in the data; it is the data. The coders gave themselves four codes for each issue, and the fourth one is “Candidate Provides No Information.” Read across all fourteen issues, the fourth code is the most common answer in the file. So this brief asks the question the file was built to answer: how much of a platform does a primary candidate actually publish, where a voter can read it?

The test

The data is the Primaries Project database, compiled at the Brookings Institution by Elaine Kamarck and Alexander Podkul, reported in 2014,1 and downloadable from Brookings. Their question was about factions: whether the Tea Party — the conservative movement that rose against the Republican leadership after 2009 — was really taking over the Republican Party. To answer it they needed to place every candidate, not just the famous ones, so they coded nearly everybody who filed — 1,662 candidates, the whole field rather than a sample of it.

This source fits the question because of one fact about how it was made. The coding was done from the candidates’ own websites. Nobody interviewed these candidates and nobody sent them a questionnaire; a researcher read what each campaign chose to publish, and coded it. A survey would have offered “no opinion” and a candidate would have picked something. Here nobody was asked, so silence survives as a recorded value, which makes this the rare file where not saying is measured.

This brief belongs to the cluster the roster chapter introduces: records of who ran and who won, which say nothing about what any candidate stood for. This file holds the missing half, what the candidates would say, read against the same 2014 field. The test: count the silence, per issue and per candidate, and see whether it looks like an accident or like a strategy.

The data

The workbook holds one row per candidate and 48 columns. The ones this brief reads, by name: fourteen issue columns, each coded 1 to 4; party and party_side; prim_result, whether the candidate won or lost; and faction_code. A derived count, silent_on, gives the number of issues coded 4 for each candidate. The four codes:

Code What the codebook calls it
1 Candidate Supports
2 Candidate Opposes
3 Candidate Provides Complicated/Complex/Unclear Position
4 Candidate Provides No Information

Codes 1 and 2 are positions. Code 3 is a position the coder could not resolve into a side. Code 4 is not a position at all: the researcher read the website and found the subject was not raised.

One row shows how the count is made. Dave Brat, the challenger who beat Eric Cantor in Virginia’s seventh district (the opening case of the primary-defeats brief), is coded on 11 of the 14 issues, every one of them a 2, opposes. On the other 3 — the Keystone pipeline, the minimum wage, climate change — the coder found nothing on his site, and entered a 4. His silent_on is therefore 3, and that number, not his views, is what the rest of this brief counts.

Quantity Value
Candidates coded 1,662
House candidates 1,443
Senate candidates 219
Issues coded per candidate 14
Columns in the workbook 48
Primary election dates covered 15, from 4 March to 9 September

The cleaning is where two programs — R and Python, the languages most of this kind of work is done in — disagree about the same file. The party column holds 15 distinct strings for what are really about a dozen parties — three candidates filed under D followed by a space, one Republican as G.O.P., one lowercase Libertarian.

The string in the cell Candidates Characters
R 896 1
D 716 1
No Party Preference 19 19
Libertarian 7 11
Independent 6 11
Green 4 5
“D” <- ends in a space 3 2
Peace and Freedom 3 17
Alaskan Independence 2 20
G.O.P. 1 6
libertarian 1 11

Whether that trailing space exists depends on which program opens the file. R’s reader trims whitespace by default, so the three dirty cells arrive clean and nothing warns you; Python’s reader leaves them alone.

Reading the same file with Distinct party strings What happens to “D”
Python, pandas.read_excel() 15 kept
R, readxl::read_excel() 14 silently trimmed to “D”
R, readxl::read_excel(trim_ws = FALSE) 15 kept

Neither program is wrong. But a student who counts parties in R and one who counts in Python will disagree, and neither will see why. This brief reads the column both ways on purpose: the clean version is what the tables use, and the 3 cells that differ are counted and printed rather than assumed.

One variable is used only with a warning attached. The faction variable has ten codes; the codebook prints four of them, under the heading examples, and for codes 11, 33, 55, 66 and 99 there is no published definition anywhere.

Code Candidates Party What the codebook says it means
11 261 Republican — not defined —
22 251 Republican Tea Party Republican
33 9 Republican — not defined —
44 246 Republican Conservative Republican
55 40 Republican — not defined —
66 175 Democrat — not defined —
77 308 Democrat Establishment Democrat
88 66 Democrat Moderate Democrat
99 47 Third party — not defined —
100 259 Democrat and Republican — not defined —

Altogether 791 (47.6%) candidates carry a faction code with no published meaning, and this brief does not guess what the codes are. Getting the file costs nothing: no account, no key, no fee. What is missing is any promise of permanence — both files sit in the website’s upload folder and carry no DOI, the permanent identifier a published dataset is given so that it can always be found, which is why copies are kept beside this brief.

Before you read on, write a number down. The file codes 14 issues for each of 1,662 candidates. On how many of those 14 do you think the typical candidate said nothing? Pick a number between 0 and 14, and commit to it before you look at the figures.

What it says about democracy

Figure 1. Where 1,662 candidates stood on fourteen issues, sorted by how many stayed off the subject. Stacked bars because every row is the same 1,662 candidates split four ways, so the rows are directly comparable; the figure at the right of each row is the share coded “provides no information.”

The range is wide and it is not random. Benghazi is the quietest subject at 84.5 percent and the Affordable Care Act the loudest at 29.3 percent. Read the top and bottom rows together. Benghazi — the 2012 attack on the U.S. diplomatic mission in Benghazi, Libya, and the congressional investigations that followed — was the story conservative media ran hardest in 2014, and 1,405 of 1,662 candidates did not put it on their website. The Affordable Care Act, the 2010 health-insurance law, was the most-discussed subject in the file, and 487 candidates still said nothing about it.

Figure 2. How many of the 14 issues each candidate left unmentioned. 12 candidates addressed all 14, which is 0.7 percent of the field; 222 addressed none of them.

Most readers guess something between two and four, because the candidates they can picture are the ones with a full issues page. The median is 8. And the shape matters more than the middle: this is not a hump around a typical candidate who covers most subjects. The distribution leans heavily toward silence, and its single tallest bar sits at the far end, where a candidate’s website mentioned none of the fourteen. The 222 are not all fringe candidates, either — some are serious people whose sites were a biography and a donate button.

Primary result House candidates Mean issues left unmentioned
won 779 7.3
lost 638 9.2
runoff 26 8.5

House candidates who won their primary left 7.3 of the 14 issues unmentioned on average; the ones who lost left 9.2. Do not read that as a finding about what wins primaries. Winners include hundreds of incumbents running unopposed, who have the least to gain from a policy page and the most staff to build one. The comparison is here because it shows the variable is not noise: it moves with something. What it moves with, this file cannot say.

Why does the silence matter for democracy? There is a book about exactly this. Parties on the Ground (2026), by Kathleen Bawn, John Zaller and four colleagues, studies 55 winnable open-seat nominations — contests with no sitting member running, in districts the party could expect to win — from this same 2013–14 cycle through 346 interviews.2 Its argument is that primaries do not work the way the Progressive-era reformers who created the direct primary a century ago intended. Most voters pay too little attention to use them; the actors who matter are organised groups with intense policy demands, who vet candidates, vouch for them, and supply or withhold money.

Figure 1 is the public half of that argument. If a voter wanted to do the job the primary was designed to give them, the website is where they would start. On the median candidate they would find 6 of 14 subjects addressed, and on 222 candidates none. The groups in Bawn’s account are not reading websites — they meet candidates and get answers that are never published. So the fourth code is doing more than flagging missing values. It measures how much of a nomination contest happens where the public cannot see it.

What this brief cannot tell you

It cannot tell you what candidates believed. It records published claims. A candidate who opposed the Affordable Care Act privately and never mentioned it is coded identically to one who had no view.

It cannot tell you why a subject was left out. Silence on immigration might be strategy in a district where the issue splits your coalition. It might be a website built in a weekend, or a candidate who talks about the subject constantly at events and never wrote it down. The code is the same in all three cases.

It cannot separate “no experience” from “we could not find out.” The prior-office variable is a 0/1 flag whose zero the codebook defines as “No or No information – never held office and not established are one code”. Two very different candidates share that number.

It is one election. 2014 was a midterm with an unpopular Democratic president and a Republican faction fight in progress. Nothing here establishes that campaign websites are usually this empty.

And the websites are gone. The coding was done in 2014 from live sites, and most of those domains now expire or redirect. The file is the only surviving record of what it describes, which means its coding decisions cannot be audited by anyone, including its authors.

What you should have learned

Extensions

None of these is answered above, and every one can be answered from the tables the Sources section hands over.

Two stretch ideas point past the spreadsheet. Pick five candidates from candidates.csv and look their 2014 campaign sites up in the Internet Archive’s Wayback Machine. Check the coding of one issue against what the archived page says, and note how many sites survive at all. And read this file beside the nomination-anchors brief, which rebuilds Bawn and Zaller’s 55 open-seat contests from the same cycle. Do the candidates groups organised behind say more or less on their websites than the field?

Sources

Data

Copies of both files are kept beside this brief, because Brookings serves them from its website’s upload folder rather than an archive, and neither carries a DOI. The party column is read twice, once with whitespace trimming turned off, and the difference between the two reads is reported rather than resolved silently; the validation results are reproduced in checks.csv.

Academic literature

The data itself

Every figure above is drawn from these tables. They are plain CSV, they open in a spreadsheet, and they are yours to take further.

by_count.csv, by_issue.csv, by_outcome.csv, candidates.csv, factions.csv, party_labels.csv

One more file is not data about the subject – it is how this chapter checked its own work: checks.csv, the arithmetic verified before anything was drawn.

Rebuild this data yourself, with an AI assistant
I want to rebuild a public dataset from its original source, without any
starting files. Please do the following and show your work.

THE SOURCE. Brookings Institution, The Primaries Project, compiled by
Elaine Kamarck's team, who read the campaign website of every 2014
congressional primary candidate and coded what it said. One Excel
workbook, about 640 KB, in the old .xls format:
https://www.brookings.edu/wp-content/uploads/2016/06/PrimariesDatabase_Clean.xls
and its codebook, a Word document in the same folder,
PrimariesCodeBook_clean.docx. Each row is one candidate. No account or
key is needed. The file was last saved in January 2015 and will never
be updated; the address is a content-management system's uploads
folder, so the risk is the link dying, not the data changing.

HOW TO DOWNLOAD IT. Nothing blocks the download, but watch your reader:
some tools silently trim whitespace from text cells. Read the party
column exactly as stored at least once, because a few cells end in a
space, and whether they exist depends on who is looking.

WHAT TO BUILD.
1. A count of the rows and columns, and the distinct strings in the
   party column — first exactly as the file stores them, then after
   trimming — reporting how many the trim makes disappear.
2. From the fourteen issue columns, each coded 1 to 4, where 4 means
   the website never mentioned the issue: how many of the fourteen
   each candidate is silent on, its median, and how many candidates
   are silent on all fourteen and on none.

CHECK YOUR WORK. The copy this book used was downloaded in August 2026.
If your rebuild matches it, you should find:
- 1,662 candidates and 48 columns
- 15 distinct party strings exactly as stored; a whitespace-trimming
  reader sees only 14
- the median candidate is silent on 8 of the 14 issues
- 222 candidates are silent on all fourteen, 12 on none
The workbook has not changed since 2015 and should not change again;
any difference means you are holding a different file.

  1. Elaine C. Kamarck and Alexander R. Podkul, “The 2014 Congressional Primaries: Who Ran and Why,” Brookings Institution, 2014, https://www.brookings.edu/articles/the-2014-congressional-primaries-who-ran-and-why/.↩︎

  2. Kathleen Bawn, Knox Brown, Angela X. Ocampo, Shawn Patterson Jr., John L. Ray and John Zaller, Parties on the Ground: A Study of Nominations for the House of Representatives (Chicago: University of Chicago Press, 2026), https://doi.org/10.7208/chicago/9780226853314.001.0001; the nomination-anchors brief rebuilds its tables.↩︎