Florida 2000 General Election — Ballot-Level Microdata

General Description

This dataset contains anonymized, individual-level Cast Vote Records (CVR) from the historic November 7, 2000 United States General Election in Florida. The data covers 10 selected counties (Broward, Highlands, Hillsborough, Lee, Marion, Miami-Dade, Palm Beach, Pasco, Pinellas, and Sarasota), capturing the complete ballot profile (the “long ballot”) for each individual voter across concurrent federal, state, county, district, and local elections, as well as referendums.

Because each observation maps the exact combination of choices made by a single voter across multiple offices on a single ballot, this dataset offers rare, high-resolution insights into historical voting behavior. A level of detail that is typically unavailable to researchers working with aggregated precinct returns.

Potential Research Applications

Counties Included

County File Voters Precincts Races
Broward Broward.RData 588,007 747 59
Highlands Highlands.RData 22,237 20 23
Hillsborough Hillsborough.RData 355,027 366 52
Lee Lee.RData 188,857 194 35
Marion Marion.RData 105,185 115 28
Miami-Dade Miami_Dade.RData 651,650 762 53
Palm Beach Palm_Beach.RData 447,466 592 43
Pasco Pasco.RData 146,648 148 27
Pinellas Pinellas.RData 406,956 377 42
Sarasota Sarasota.RData 163,750 159 38
Total 3,075,783 3,480 247 distinct

Precinct counts include absentee and early-voting precincts, which pool ballots from several districts and are not geographic units. The 400 county-race columns correspond to 247 distinct races (statewide races appear in every county file).

Coverage. In six counties (Broward, Lee, Miami-Dade, Pasco, Pinellas and Sarasota) the data reproduce the certified results almost exactly (median absolute difference below 0.5%). In Marion the file of one absentee precinct (A008) is not in the source (98.9% of the certified presidential vote). In Palm Beach and Hillsborough some precinct files of the source were overwritten by test decks or survive only as fragments and could not be used: coverage is about 96% of the certified votes, and lower for some district races. Highlands is a partial sample: about 62% of the certified votes. A few local races placed at the end of the ballot are not recorded in the source files (e.g. Tampa amendment 6; fire-district and municipal races in Lee).

File Structure

RData files (root)

Each .RData file contains a single data.frame object with the same name as the file (e.g., Lee in Lee.RData, Miami_Dade in Miami_Dade.RData). The structure is:

Vote codes in each race column:

Code Meaning
Candidate code (e.g. R, D, BauDuf) Valid vote for that candidate or combination
A Abstention (Undervote): the voter was eligible but made no choice in this race
I Invalid vote (Overvote): the voter’s mark was not counted, more marks than allowed
NA The voter was not eligible to vote in this race (structural non-participation)

The distinction between A, I, and NA is critical for statistical analysis: only NA values indicate that a voter was outside the eligible universe for a given race.

The meaning of race-specific codes is provided in codebook. In particular, codes such as D, R, and O typically denote Democratic, Republican, and other party affiliation candidates, respectively. However, their specific interpretation depends on the coding of the corresponding race and should not be assumed to have the exact same meaning across all races.

Some races allowed voters to select more than one candidate (e.g., hospital board seats). In these cases, each observed combination of candidates is recorded as an atomic string (e.g., BauDuf for a voter who selected both Bauchert and Duff). The codebook lists the individual candidates for each multi-member race.

images_county_ballots/

Contains scanned images of the official ballots used in each county during the November 2000 general election. These images document the physical layout of each ballot, showing the ballot positions: the physical locations on the paper ballot that the optical scanner (or the visual inspection) reads as marked (1) or unmarked (0). Researchers can use (with significant amount of work) these images to cross-reference the raw scanner data in raw_data/ with the race codes used in the processed .RData files, and to study the effect of ballot layout on voter behavior (e.g., the butterfly ballot in Palm Beach County).

package/

Contains the source package eiballots for R, which provides documented accessor functions for the processed .RData files, a catalog of races and counties, and tools for computing marginal distributions and joint contingency arrays for ecological inference. The package can be installed directly in R:

install.packages("path/to/package/eiballots_0.2.0-1.tar.gz",
                 repos = NULL, type = "source")

Alternatively, it can be installed from CRAN with install.packages("eiballots").

raw_data/

Contains the raw scanner (visual inspected) data files in semicolon-delimited CSV format (.csv), one file per county. Each row represents one voter; each column corresponds to a ballot position: a physical location on the optical scan ballot that the voting machine reads. Values are binary:

Value Meaning
1 That ballot position was marked (identified as marked) by the voter
0 That ballot position was not marked

These files reflect the original machine-read data before any processing or recoding. The ballot images in images_county_ballots/ document which ballot position corresponds to which candidate or option in each race, allowing researchers to reconstruct the full voting record from the raw scanner output. The processed .RData files in the root of this deposit are derived (with significant amount of work) from these raw files.


Quick Start in R

The easiest way to access this dataset is through the companion R package eiballots, which provides documented accessor functions, catalog objects, and tools for computing ecological inference summaries.

The codebook.pdf included in this deposit provides a printable reference of all race codes, offices, candidates, and county coverage. This is equivalent to the information returned by list_elections() and election_catalog in the eiballots package.

# Install the package
# install.packages("eiballots")

# Set the data directory to a local folder if you have downloaded the files
options(data_dir = "/path/to/downloaded/files/")

# Or leave unset to download directly from this OSF repository
if (is.null(getOption("data_dir"))) {
  message(
    "\n[Performance Note]: You are loading data directly from OSF.\n",
    "To speed up execution, avoid download wait times, and remove dependency\n",
    "on OSF server availability, it is highly recommended to:\n",
    "  1. Download the .RData files from https://osf.io/np73b/overview to a local folder.\n",
    "  2. Set your local path by running: options(data_dir = '/path/to/files/')\n"
  )
}

# Load a single county
library(eiballots)
lee <- get_county_data("Lee")
dim(lee)       # rows = voters, columns = COUNTY + PRECINCT + races
head(lee[, 1:6])

# List available races
list_elections()
list_elections(level = "federal")

# Compute ecological inference summaries for two races
obj <- ei_summary(c("PRE", "USS"))
print(obj)
summary(obj)

For users who prefer to work directly with the .RData files without the package:

# Load a county file directly
load("Lee.RData")   # loads the object 'Lee' into the workspace
dim(Lee)

Data Collection and Processing

The raw Cast Vote Records were originally collected by Dan Keating (data reporter, The Washington Post) in connection with The Media Consortium Florida Ballot Project, and made available through personal communication and the American National Election Studies (ANES, University of Michigan) following the 2000 Florida recount controversy.

The present dataset is an elaboration of those raw records: vote codes were standardized across counties, multi-member race combinations were encoded consistently, structural non-participation was distinguished from blank and invalid votes, test decks and duplicated tabulation runs were removed, and ballot positions that conflated votes from distinct races were disentangled where possible. Eligibility for district races was inferred from the share of voters of each precinct marking the race and refined at the voter level for split precincts. Where official precinct-level returns or ballot-position worksheets were available (Lee, Palm Beach, Miami-Dade), they were used to assign districts or to check the position mapping; elsewhere the assignment relies on the observed voting patterns. County totals were validated against the certified results of the Florida Division of Elections. All processing steps are documented in the companion data paper (see Citation: to be published); the changes between versions are listed in NEWS.md.

Data Structure and Privacy

The data is organized by county. Each race is classified by level following the types of government of the U.S. Census of Governments (federal, state, county, municipal and special district) and by type (single-member, multi-member and referendum).

This dataset is natively anonymous at the source. It contains no personally identifiable information (PII): no voter names, addresses, registration numbers, or any other personal identifying information. The data retains full statistical integrity while preserving complete compliance with research data ethics standards.

License

This dataset is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0). https://creativecommons.org/licenses/by/4.0/

The raw Cast Vote Records on which this dataset is based were made available to the authors through personal communication by Dan Keating (The Washington Post) and the American National Election Studies (ANES, University of Michigan).

Citation

If you use this dataset in your research, please cite it as:

Cristina Aybar and Jose M. Pavía. (2026). Florida 2000 General Election — Ballot-Level Microdata [Dataset]. OSF. https://doi.org/10.17605/OSF.IO/NP73B

A BibTeX entry is available via the OSF project page. If you use the eiballots R package, please also cite:

Cristina Aybar and Jose M. Pavía. (2026). eiballots: Ballot-Level Microdata and Tools for Ecological Inference (Florida 2000). R package, version 0.2.0-1. https://doi.org/10.32614/CRAN.package.eiballots

Source

Own elaboration from raw ballot data from the Florida general election, November 7, 2000, made available to the authors through personal communication by Dan Keating (data reporter, The Washington Post) and the American National Election Studies (ANES, University of Michigan).

Acknowledgements

We thank Jaime Ventura (ANES, University of Michigan) and Dan Keating (The Washington Post) for providing the raw data that serve as the starting point for the construction of this package. We also acknowledge funding from the Conselleria de Educación, Cultura y Universidades (grant CIACIO/2023/031).

Contact

For questions about the data or the companion package, please contact pavia@uv.es.