Elections¶
Results of the white House of Assembly elections by electoral division, 1938–1987, with referendum results and the crosswalks that link divisions to magisterial districts.
Key files¶
All paths are relative to shared_resources/data/.
| File | Description |
|---|---|
panels/electoral_division_panel.csv |
Division × election panel, 1943–1987 (1,750 rows; 10 elections), one row per division per election, geocoded |
elections/elections_1977_regazette/elections_1977_gazette.csv |
1977 general election, transcribed from Government Gazette 5851 (one row per division, wide by party) |
elections/elections_1977_regazette/elections_1977_gazette_long.csv |
The same, one row per candidate |
elections/stata_elections_converted/ |
Returns 1943–1987 converted from cleaned Stata files |
elections/elections_completed_converted/ |
Schoeman compilations 1938–1976; House of Assembly 1981–1989; referendums 1960, 1983 and 1992 |
elections/crosswalk_1980_integrated/, elections/crosswalk_1974_1966_chained/ |
Electoral-division ↔ magisterial-district crosswalks for the 14th, 13th and 12th Delimitations (see Geographic Crosswalks) |
elections/electoral_division_geocoding.csv |
Approximate coordinates for 437 division names; corrections in shared_resources/corrections/electoral_division_geocoding.csv |
Coverage¶
| Election | Divisions in panel | Returned unopposed |
|---|---|---|
| 1943 | 149 | 17 |
| 1948 | 150 | 12 |
| 1953 | 155 | 20 |
| 1958 | 156 | 24 |
| 1961 | 156 | 70 |
| 1970 | 163 | 9 |
| 1974 | 170 | 43 |
| 1977 | 164 | 44 |
| 1981 | 165 | 14 |
| 1987 | 166 | 2 |
The panel holds no 1966 election; 1966 enters only through the 12th Delimitation crosswalk. The returned_unopposed flag is set in three ways. The 1943–1974 returns use a placeholder code, the 1977 Gazette marks unopposed returns, and the 1981 and 1987 source files leave unopposed returns blank. For those two elections, a division with no vote count for any candidate is flagged (14 in 1981, 2 in 1987).
The 1977 election¶
The 1977 general election was fought on the 13th Delimitation (1974). Its returns are transcribed from Schedule A of Government Gazette 5851 (pp. 11–15), read from 220 and 500 dpi page renders in October 2026 during the project's data program, which was carried out largely by AI agents (ops_admin/data_program_2026_10/elections_1977/README.md). The record does not show a person re-reading the transcription; the arithmetic checks below are what support it.
- Divisions: 164 House of Assembly divisions, under their 13th-Delimitation names. Springs appears in Schedule E but is not printed in Schedule A.
- Unopposed: 44 seats were returned unopposed.
- Arithmetic: 114 of the 120 contested returns add up exactly; the other six are misprints in the Gazette and are kept as printed, with notes.
- Registered voters: reconcile exactly to the Gazette total of 2,193,635.
- Parties: the Gazette prints no party labels. Party affiliations come from the Stata-converted 1977 file, or for seats absent from that file, from the 1974 and 1981 returns. Five candidates' parties are unknown.
Compared with the Stata-converted 1977 file, which was laid out on the 1981 division list, 143 divisions are identical and 10 differ (5 typographical errors in that file, and 5 places where it departs from a Gazette misprint, which suggests it drew on a secondary source). Eleven divisions that existed only under the 13th Delimitation are present in the Gazette transcription and absent from the Stata file: Rondebosch, Somerset East, Moorreesburg, Griqualand East, Eshowe, Musgrave, Marico, Orange Grove, Prinshof, Von Brandis and Witwatersberg (144,169 registered voters). The panel builder (panel_builders/07_electoral_panel.py) reads the Gazette transcription for 1977.
Unopposed seats¶
A seat returned unopposed has no vote counts. The source returns for 1943–1974 code such seats with a placeholder of 9,999,999 votes. In the panel, every vote count for an unopposed seat is NA and the row carries returned_unopposed = 1 (195 placeholder cells across 1943–1974; 44 seats in 1977). Unopposed seats have no vote shares and drop out of any vote-share regression. They should not be coded as a vote share of 1 for the winning party.
The placeholder remains in the converted files in stata_elections_converted/; mask any vote count of 9,000,000 or more before using those files directly.
Party groupings¶
The 1974-shock paper (Boone and Wilse-Samson) groups parties as follows:
- Right-wing: the Herstigte Nasionale Party (HNP) and the Conservative Party (CP), plus, in 1981, the National Conservative Party (NCP), Connie Mulder's breakaway that merged into the CP in 1982.
- National Party (NP).
- Progressive/PFP line: the Progressive Party and the Progressive Federal Party.
These groups do not cover every ballot in every year.
Research use: the Eiselen divergence¶
Combined with the date-correct crosswalks and the Eiselen Line classification, the panel shows white electoral divergence after the 1974 labour shock. In the 1974-shock paper's main specification (172 divisions, 434 division-election observations, 1977 base year, divisions described with the delimitation in force at each election), right-wing vote share rose 14.2 percentage points more east of the line than west of it between 1977 and 1987. The 1970 pre-period interaction is +0.51 percentage points (p = 0.54).
Provenance¶
- Sources: B. M. Schoeman's compilations of parliamentary election results; official returns published in the Government Gazette. Source PDFs are in
raw_archives/02_elections/results_raw/. - Transcription: 2013 contract transcription (the election returns were among the tables transcribed by Rao's Infocube), and Stata files cleaned by the do-files in
raw_archives/02_elections/clean*.do(who wrote them, and when, is not recorded). - 1977: transcribed from Government Gazette 5851, as above.
- Panel: built by
shared_resources/scripts/panel_builders/07_electoral_panel.py, which masks the unopposed placeholder, applies the geocoding ledger, and keeps one row per division per election. See Provenance & Checks.