Before a campaign writes a single advertisement, somebody decides which counties are worth a field office, a canvass, a candidate’s afternoon. A campaign has one statewide number it needs to hit and a hundred counties to get it from. How does it decide where to hunt for votes?
The method is called vote targeting, and at the county level it is arithmetic short enough to do by hand: past shares of the vote, multiplied by a target. That arithmetic matters to citizens on both of its ends. It decides who gets talked to at all, since a voter in a county the model writes off will not be canvassed, polled or asked what they want. And it is public, because it runs entirely on election returns anyone can download, so anyone can redo a campaign’s map and inspect the assumptions inside it. This brief does exactly that.
The test is to run the standard county-targeting method on a real case, and then to press on each of its assumptions. The case is the North Carolina governor’s race, 2012 through 2024, and it is rebuilt rather than copied. A standard campaigns textbook works a vote-targeting example on exactly these four elections;1 rather than retype its tables, this book rebuilt them from the source the textbook cites, and rebuilding lets you check.
The five counties the book prints reproduce exactly. Two of its statewide totals do not: the returns give 2,298,880 for 2016 and 2,586,604 for 2020, where the book’s printed figures carry one transposed digit and one off-by-one. Two typos in a published table are not a scandal. They are the reason you go to the source.
The source is the North Carolina State Board of Elections, which publishes the precinct-level results of every general election — one row per precinct per candidate — free to anyone, on its results-data page at https://www.ncsbe.gov/results-data/election-results/historical-election-results-data. A certified return is the complete, official record of who won, and the returns chapter explains what such a record can and cannot bear. This one suits the method because it contains exactly what targeting arithmetic needs and nothing else: votes, by county, by election.
nc_gov_county.csv is the whole dataset: 400 rows, one
per county per election, covering 100 counties in each of 4 governor’s
races. Its columns are year, county,
dem, rep, oth and
total, and every one of them is a count of votes.
Four state releases, about 110 MB of precinct rows, became those 400.
Every precinct in a county was added up, every contest but the
governor’s race was discarded, and every candidate was folded into
dem, rep or oth. The four
vote-method columns (election day, early in-person, by mail, and
provisional — ballots set aside until the voter’s eligibility is
confirmed) were summed into one total, so the file cannot say
how anyone voted, only how many did.
The four releases do not share a layout. The 2012 file is a comma-separated table with lowercase column names; the three later ones are tab-separated, with a different set of columns entirely. Read one as if it were laid out like the other and you get no error — you get zero rows, and a tidy table quietly missing an election. So each release was read on its own terms, a blank vote cell was taken as zero, and the result was accepted only once all 100 counties appeared in all 4 years. The county sums were then set against the state’s certified canvass — the official statewide tally the board signs off on — which is how the textbook’s two stray figures came to be noticed at all.
One row is one county in one election:
| Year | County | Democratic | Republican | Other | Total |
|---|---|---|---|---|---|
| 2,020 | Wake | 410,386 | 209,183 | 10,104 | 629,673 |
These are votes, not shares and not people. There is no turnout here, no registration and no population, so a county already at its ceiling and a county with room to grow look identical. Hold on to that. It is the method’s deepest blindness, and the file states it honestly.
The four statewide totals, one of them not like the others:
| Year | Democratic | Republican | Other | Republican % | Other % |
|---|---|---|---|---|---|
| 2012 | 1,931,580 | 2,440,707 | 96,008 | 54.6 | 2.15 |
| 2016 | 2,309,157 | 2,298,880 | 102,977 | 48.8 | 2.19 |
| 2020 | 2,834,790 | 2,586,604 | 81,383 | 47.0 | 1.48 |
| 2024 | 3,069,496 | 2,241,309 | 280,742 | 40.1 | 5.02 |
Republicans won in 2012 and lost the next three, and 2024 is not a
normal loss. The Republican share falls to 40.1% while the
oth share more than triples, from 1.48% to 5.02%. The
Republican nominee’s campaign collapsed late, after a news
investigation,2 and voters who would not support him went
somewhere other than the Democratic line. That election comes back
below.
Before you read on, make a prediction. The method below ranks counties by their contribution to the party’s statewide vote. Counties could instead be ranked by the Republican percentage of the vote cast there — where the party is best liked rather than where its votes are most numerous. Write down how much of the top five you expect the two lists to share: all of it, most of it, or none of it.
The method takes three steps. For each election, compute each county’s share of the party’s statewide vote. Average those shares across the four elections. Multiply each average by a statewide target, and the products are the county quotas.
Wake County shows the arithmetic. In 2020 Wake cast 209,183 Republican votes for governor out of 2,586,604 statewide, a share of 8.09%. Its shares in the other three elections average with that one to 8.35%, and 8.35% of a 3,200,000-vote target is 267,327 votes: Wake’s quota.
| Measure | Republican | Democratic |
|---|---|---|
| Top 10 counties supply | 37.5% | 55.6% |
| Top 25 counties supply | 63.1% | 73.7% |
| The bottom 50 counties supply | 15.0% | 11.0% |
| Counties needed to reach half the party’s vote | 16 | 8 |
Move across the chart to read the value at any N.
Figure 1. How concentrated each party’s vote is. Running totals over counties ranked from the largest contributor down — the first county’s share, then the first two together, and so on — because the question is how few places hold half of each party’s vote, and a running total answers it directly. The Democratic curve reaches half the party’s vote in 8 counties; the Republican curve needs 16. The curves stay close over most of their length: concentration is largely a fact about where people live, not about which party they vote for.
8 counties against 16 is a different campaign, not a different emphasis: fewer field offices, denser media buys, and far more exposure to one bad night in one metro. The Republican coalition is more spread out, which is more expensive to organize and more robust to a local collapse.
Now push a statewide target of 3,200,000 votes down through the shares:
| County | Average share (%) | Votes needed |
|---|---|---|
| Wake | 8.35 | 267,327 |
| Mecklenburg | 7.12 | 227,753 |
| Guilford | 4.03 | 128,845 |
| Forsyth | 3.15 | 100,804 |
| Union | 2.94 | 94,094 |
| Gaston | 2.60 | 83,314 |
| Iredell | 2.37 | 75,875 |
| Johnston | 2.36 | 75,384 |
That is a campaign plan: Wake County must produce about 267,327 Republican votes, Mecklenburg about 227,753, and so on down the hundred. Setting the plan against the record is less flattering.
Hover a bar for the shortfall.
Figure 2. The plan’s target against every Republican total actually cast. The best of the four elections is 2,586,604 votes, in 2020, and the target sits 613,396 above it. Per county, that means asking Wake for 109,415 more Republican votes than it produced in 2024. A quota that exceeds anything ever achieved is not a plan; it is a wish with a decimal point.
The target was a choice, so try three:
| Statewide target | Wake | Mecklenburg | Durham | Top ten in the same order? |
|---|---|---|---|---|
| 3,200,000 | 267,327 | 227,753 | 40,620 | TRUE |
| 3,069,496 | 256,425 | 218,465 | 38,963 | TRUE |
| 2,586,604 | 216,084 | 184,096 | 32,833 | TRUE |
The ranking never changes; only the magnitudes scale. Every county’s quota is the same fraction of whatever total you pick, so changing the target changes how hard the campaign must work everywhere, and never where it goes. The shares set the geography, and the shares are computed from history. A campaign that wants a different map has to argue that the past is not a good guide, which is a political judgment rather than an arithmetic one.
Now the prediction you wrote down.
| Rank | By contribution | Contribution pct | By percentage | Republican pct |
|---|---|---|---|---|
| 1 | Wake | 8.35 | Yadkin | 73.6 |
| 2 | Mecklenburg | 7.12 | Mitchell | 73.5 |
| 3 | Guilford | 4.03 | Alexander | 73.0 |
| 4 | Forsyth | 3.15 | Avery | 72.9 |
| 5 | Union | 2.94 | Randolph | 71.8 |
Most readers write down “most of it,” on the reasoning that a party’s biggest counties and its friendliest counties ought to be much the same places. The two top-five lists share 0 counties. That is not a different order but a disjoint list, and extending to the top ten of each still gives 0 in common.
Hover any dot for its two shares.
Figure 3. The two questions a campaign might be asking, on two axes. One dot per county: across, the Republican share of votes cast there, which is where the party is liked; up, the county’s share of the party’s statewide vote, which is where its votes are. Almost nothing sits in the top-right corner, and that empty corner is why the two rankings share nothing.
If the job is banking raw votes, go to Wake, where the party wins about 36.1% of the vote cast. If the job is finding a friendly audience, go to Yadkin, at 73.6% — which supplies 0.57% of the party’s statewide total. Neither ranking mentions margin — how close the two parties are in a county — or persuadability. Both locate existing supporters, so both silently treat the election as a turnout problem rather than a persuasion problem, and that is a strategic assumption the arithmetic never states.
One more assumption hides in the word “average.” Averaging four elections treats them as interchangeable, and 2024 was not interchangeable. Drop it and recompute every share:
| County | Share with 2024 (%) | Share without 2024 (%) | Change |
|---|---|---|---|
| Wake | 8.35 | 8.79 | 0.44 |
| Mecklenburg | 7.12 | 7.54 | 0.42 |
| Guilford | 4.03 | 4.20 | 0.18 |
| Forsyth | 3.15 | 3.27 | 0.12 |
| Brunswick | 1.86 | 1.76 | -0.10 |
| Onslow | 1.63 | 1.54 | -0.09 |
| Johnston | 2.36 | 2.28 | -0.07 |
| Robeson | 0.90 | 0.84 | -0.07 |
Only 23 of the 100 counties gain share when 2024 is dropped, and they are the large ones: a typical gainer cast 85,588 votes in 2024, against 22,398 for a county that loses. That is the shape of the candidate collapse, and leaving 2024 in the average means planning the next campaign around a candidate-specific disaster. Using only the newest election instead assumes one election is not noisy, and it is. What you cannot do is make the choice silently, which is exactly what a spreadsheet column headed “average” invites.
It cannot say whether any county is reachable. The file carries votes only: no registration, no turnout, no population. Nothing in it separates a county at its ceiling from one with slack, and that ratio is the first thing a real targeting operation computes.
It cannot say anything about persuasion. Hersh (2015) shows that what campaigns know about individual voters comes mostly from public records whose contents vary by state law.3 Nickerson and Rogers (2014) describe the industry scoring individuals on persuadability,4 precisely because turnout-only arithmetic runs out of room. The county arithmetic here is the ancestor of both, with the same blind spots at a scale you can check by hand.
Four elections is a small average, and one of the four is an outlier. Whether past shares predict future shares at all, while a coalition is moving, is the deepest open question here, and 2024 is evidence that sometimes they do not.
A county is a coarse unit, and this is one office in one state. Real targeting runs at precinct and household level, and a county plan cannot tell one half of a metro from the other. A governor’s race in North Carolina is neither a presidential race nor the country.
None of these is answered above, and every one can be answered from the table the Sources section hands over.
nc_gov_county.csv carries dem,
rep and total by county and
year. Pick a county and compute the swing between each pair
of elections. Which counties are actually in motion, and which are
settled?dem and
rep: how many voters would have to change their minds to
flip it. Then compute the extra-turnout target instead. Which is
smaller, and where?oth column by year. Third-party
votes are usually ignored in targeting arithmetic. Are they ever large
enough here to matter?total, then by the margin computed
from dem and rep. A campaign can visit only a
few. Build your own five-county list and defend the ordering.Two stretch ideas point past the spreadsheet. Download another state’s certified county returns for the same years from its own election site and rerun the arithmetic — does the no-overlap result survive the border? And request what your own state’s voter file records, since Hersh’s argument is that the columns a legislature chose to collect are the instrument through which campaigns see you.
Data
Academic literature
The data itself
Every figure above is drawn from this table. It is plain CSV, it opens in a spreadsheet, and it is yours to take further.
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. The North Carolina State Board of Elections publishes precinct-level results for every general election. Four zips, one per election, about 110 MB in all, at addresses of this shape: https://s3.amazonaws.com/dl.ncsbe.gov/ENRS/2012_11_06/results_pct_20121106.zip and likewise for 2016_11_08, 2020_11_03 and 2024_11_05. Each zip holds one text file; each row is one contest in one precinct. No account or key is needed. The landing page, if an address moves, is https://www.ncsbe.gov/results-data/election-results/historical-election-results-data HOW TO DOWNLOAD IT. The four files do not share a layout. 2012 is a quoted, comma-separated file with lowercase column names; 2016 onward are tab-delimited with a different column set entirely. A reader that assumes one layout does not fail on the other — it silently returns zero rows. Parse each year on its own terms and confirm every year contributes rows before going on. WHAT TO BUILD. 1. The governor's race by county for the four general elections 2012, 2016, 2020 and 2024: Democratic, Republican, other, and total votes, one row per county per election. CHECK YOUR WORK. The copies this book used were downloaded in August 2026. If your rebuild matches them, you should find: - 400 rows: North Carolina's 100 counties times four elections - Wake County 2012: 233,822 Democratic votes to 234,584 Republican — a county decided by hundreds - Wake County 2024: 448,870 to 157,912 These are certified results and should not change; if the board reorganizes its archive, the addresses move but the numbers must not.
John Sides, Daron Shaw, Matt Grossmann and Keena Lipsitz, Campaigns and Elections (New York: W. W. Norton), publisher’s page at https://wwnorton.com/books/9781324046912.↩︎
The nominee was Lieutenant Governor Mark Robinson; the investigation, published by CNN on 19 September 2024, reported comments he had posted on a pornography site’s message board years earlier: https://www.cnn.com/2024/09/19/politics/kfile-mark-robinson-black-nazi-pro-slavery-porn-forum/index.html.↩︎
Eitan D. Hersh, Hacking the Electorate: How Campaigns Perceive Voters (New York: Cambridge University Press, 2015).↩︎
David W. Nickerson and Todd Rogers, “Political Campaigns and Big Data,” Journal of Economic Perspectives 28, no. 2 (2014): 51–74, https://www.aeaweb.org/articles?id=10.1257/jep.28.2.51.↩︎