Skip to content

Instantly share code, notes, and snippets.

@armollica
Last active January 6, 2018 13:18
Show Gist options
  • Save armollica/6391d8ecd6b010a9c8ca to your computer and use it in GitHub Desktop.
Save armollica/6391d8ecd6b010a9c8ca to your computer and use it in GitHub Desktop.
State Lotteries
height: 800

Lottery income per U.S. state in 2013. This income is divvied up into three places. Some goes to the prize winner, some pays for the cost of administering the lottery and the rest is government revenue. Several states don't administer lotteries: Alabama, Alaska, Hawaii, Mississippi, Nevada, Utah. Wyoming started up a lottery in July 2013 and isn't included here. The District of Columbia also runs a lottery but data isn't provided in the source data.

Notes:

West Virginia really gouges it's residents. Less than 20% of its lottery income goes to prize money and it has the fifth highest lottery income per person. Delaware and Rhode Island aren't much better.

Something weird is going on with the New Jersey data. The apportionments don't add up to the total lottery income (click the 'Share of Lottery Income' radio button). This is an issue with the source data.

I think the prize money shown here is taxed, both at the federal and state level. Assuming this is the case, government revenues from lotteries are effectively higher than the number shown here. This site, USA Mega, shows how the tax rates across states.

Data source: U.S. Census Bureau

library(dplyr)
library(tidyr)
library(jsonlite)
lotteries <- read.csv("lotteries.csv", skip=2, header=FALSE) %>%
select(id = V5, title = V7, income = V8,
toPrize = V9, toAdministration = V10, toProceedsAvailable = V11) %>%
mutate(income = extract_numeric(income),
toPrize = extract_numeric(toPrize),
toAdministration = extract_numeric(toAdministration),
toProceedsAvailable = extract_numeric(toProceedsAvailable)) %>%
filter(!is.na(id), income != "X")
population <- read.csv("population.csv", skip=2 , header=FALSE) %>%
select(id = V2, title = V3, population = V4)
output <- population %>%
merge(lotteries, all=T)
write(toJSON(output), "data.json")
[{"id":1,"title":"Alabama","population":4817678},{"id":2,"title":"Alaska","population":728300},{"id":4,"title":"Arizona","population":6561516,"income":645853,"toPrize":426143,"toAdministration":43007,"toProceedsAvailable":176703},{"id":5,"title":"Arkansas","population":2947036,"income":414561,"toPrize":292124,"toAdministration":34771,"toProceedsAvailable":87666},{"id":6,"title":"California","population":38066920,"income":4445874,"toPrize":2652095,"toAdministration":224063,"toProceedsAvailable":1569716},{"id":8,"title":"Colorado","population":5197580,"income":524074,"toPrize":345640,"toAdministration":39621,"toProceedsAvailable":138813},{"id":9,"title":"Connecticut","population":3592053,"income":1059930,"toPrize":699063,"toAdministration":43292,"toProceedsAvailable":317575},{"id":10,"title":"Delaware","population":917060,"income":452962,"toPrize":99264,"toAdministration":44509,"toProceedsAvailable":309189},{"id":11,"title":"District of Columbia","population":633736},{"id":12,"title":"Florida","population":19361792,"income":4741570,"toPrize":3162889,"toAdministration":147588,"toProceedsAvailable":1431093},{"id":13,"title":"Georgia","population":9907756,"income":3407047,"toPrize":2332453,"toAdministration":145606,"toProceedsAvailable":928988},{"id":15,"title":"Hawaii","population":1392704},{"id":16,"title":"Idaho","population":1599464,"income":182232,"toPrize":122888,"toAdministration":11167,"toProceedsAvailable":48177},{"id":17,"title":"Illinois","population":12868747,"income":2832575,"toPrize":1743685,"toAdministration":317697,"toProceedsAvailable":771193},{"id":18,"title":"Indiana","population":6542411,"income":870510,"toPrize":581346,"toAdministration":63662,"toProceedsAvailable":225502},{"id":19,"title":"Iowa","population":3078116,"income":339252,"toPrize":200802,"toAdministration":52564,"toProceedsAvailable":85886},{"id":20,"title":"Kansas","population":2882946,"income":230469,"toPrize":138555,"toAdministration":19740,"toProceedsAvailable":72174},{"id":21,"title":"Kentucky","population":4383272,"income":758665,"toPrize":494912,"toAdministration":37764,"toProceedsAvailable":225989},{"id":22,"title":"Louisiana","population":4601049,"income":422633,"toPrize":236159,"toAdministration":25953,"toProceedsAvailable":160521},{"id":23,"title":"Maine","population":1328535,"income":212886,"toPrize":143938,"toAdministration":14880,"toProceedsAvailable":54068},{"id":24,"title":"Maryland","population":5887776,"income":2021118,"toPrize":1038476,"toAdministration":340991,"toProceedsAvailable":641651},{"id":25,"title":"Massachusetts","population":6657291,"income":4565196,"toPrize":3523859,"toAdministration":94327,"toProceedsAvailable":947010},{"id":26,"title":"Michigan","population":9889024,"income":2260945,"toPrize":1493438,"toAdministration":70835,"toProceedsAvailable":696672},{"id":27,"title":"Minnesota","population":5383661,"income":527007,"toPrize":365831,"toAdministration":25392,"toProceedsAvailable":135784},{"id":28,"title":"Mississippi","population":2984345},{"id":29,"title":"Missouri","population":6028076,"income":1116996,"toPrize":752964,"toAdministration":50003,"toProceedsAvailable":314029},{"id":30,"title":"Montana","population":1006370,"income":60188,"toPrize":32176,"toAdministration":7991,"toProceedsAvailable":20021},{"id":31,"title":"Nebraska","population":1855617,"income":170807,"toPrize":93092,"toAdministration":17034,"toProceedsAvailable":60681},{"id":32,"title":"Nevada","population":2761584},{"id":33,"title":"New Hampshire","population":1321069,"income":263794,"toPrize":173357,"toAdministration":15961,"toProceedsAvailable":74476},{"id":34,"title":"New Jersey","population":8874374,"income":2663519,"toPrize":1631717,"toAdministration":70859,"toProceedsAvailable":883588},{"id":35,"title":"New Mexico","population":2080085,"income":139267,"toPrize":79548,"toAdministration":18329,"toProceedsAvailable":41390},{"id":36,"title":"New York","population":19594330,"income":7697675,"toPrize":4218988,"toAdministration":388580,"toProceedsAvailable":3090107},{"id":37,"title":"North Carolina","population":9750405,"income":1570874,"toPrize":1024347,"toAdministration":72220,"toProceedsAvailable":474307},{"id":38,"title":"North Dakota","population":704925,"income":26603,"toPrize":14217,"toAdministration":4101,"toProceedsAvailable":8285},{"id":39,"title":"Ohio","population":11560380,"income":2531002,"toPrize":1668038,"toAdministration":99872,"toProceedsAvailable":763092},{"id":40,"title":"Oklahoma","population":3818851,"income":200209,"toPrize":104463,"toAdministration":23641,"toProceedsAvailable":72105},{"id":41,"title":"Oregon","population":3900343,"income":864231,"toPrize":206837,"toAdministration":70198,"toProceedsAvailable":587196},{"id":42,"title":"Pennsylvania","population":12758729,"income":3441263,"toPrize":2299006,"toAdministration":72293,"toProceedsAvailable":1069964},{"id":44,"title":"Rhode Island","population":1053252,"income":539026,"toPrize":153206,"toAdministration":6204,"toProceedsAvailable":379616},{"id":45,"title":"South Carolina","population":4727273,"income":1114410,"toPrize":775453,"toAdministration":37100,"toProceedsAvailable":301857},{"id":46,"title":"South Dakota","population":834708,"income":146536,"toPrize":32418,"toAdministration":7767,"toProceedsAvailable":106351},{"id":47,"title":"Tennessee","population":6451365,"income":1278328,"toPrize":720231,"toAdministration":57068,"toProceedsAvailable":501029},{"id":48,"title":"Texas","population":26092033,"income":4139450,"toPrize":2767359,"toAdministration":181966,"toProceedsAvailable":1190125},{"id":49,"title":"Utah","population":2858111},{"id":50,"title":"Vermont","population":626358,"income":96067,"toPrize":64556,"toAdministration":8619,"toProceedsAvailable":22892},{"id":51,"title":"Virginia","population":8185131,"income":1594265,"toPrize":1025175,"toAdministration":80727,"toProceedsAvailable":488363},{"id":53,"title":"Washington","population":6899123,"income":534041,"toPrize":339366,"toAdministration":49954,"toProceedsAvailable":144721},{"id":54,"title":"West Virginia","population":1853881,"income":713850,"toPrize":116230,"toAdministration":32897,"toProceedsAvailable":564723},{"id":55,"title":"Wisconsin","population":5724692,"income":566103,"toPrize":329202,"toAdministration":38155,"toProceedsAvailable":198746},{"id":56,"title":"Wyoming","population":575251},{"id":72,"title":"Puerto Rico","population":3638965}]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>State Lotteries</title>
<style>
body {
font: 12px monospace;
}
.axis line,
.axis path {
fill: none;
stroke: #000;
stroke-width: 1px;
}
.y.axis path {
display: none;
}
form {
position: absolute;
right: 10px;
top: 10px;
}
</style>
</head>
<body>
<form>
<label><input type="radio" name="variable" value="raw" checked="true"> Lottery Income</label>
<label><input type="radio" name="variable" value="perCapita"> Lottery Income Per Capita</label>
<label><input type="radio" name="variable" value="share"> Share of Lottery Income</label>
</form>
<script src="//d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script>
var margin = { top: 30, left: 100, bottom: 30, right: 20 },
width = 960 - margin.left - margin.right,
height = 800 - margin.top - margin.bottom;
var scale = {
x: d3.scale.linear().range([0, width]),
y: d3.scale.ordinal().rangeRoundBands([height, 0], 0.1),
color: d3.scale.ordinal()
};
var hue = 60;
var i = d3.interpolateHcl(d3.hcl(hue, 50, 80), d3.hcl(hue + 120, 75, 50));
scale.color.range(["#cfa8b4", "#79658c", "#1d2b64"]);
var axis = {
x: d3.svg.axis().scale(scale.x).orient("bottom"),
y: d3.svg.axis().scale(scale.y).orient("left")
};
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right )
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.append("text")
.attr("class", "label")
.attr("x", width)
.attr("y", -6)
.style("text-anchor", "end");
svg.append("g")
.attr("class", "y axis");
d3.json("data.json", function(error, data) {
if (error) throw error;
var apportionment_names = d3.keys(data[2]).filter(function(key) { return key.startsWith("to"); });
data = data.filter(function(d) { return d.income; });
data.forEach(function(d) {
// raw lottery income and apportionments
var x0 = 0;
d.apportionments = apportionment_names
.map(function(name) {
return { name: name, x0: x0, x1: x0 += d[name] };
});
// per-capita lottery income and apportionments
var x0 = 0;
d.apportionmentsPerCapita = apportionment_names
.map(function(name) {
return { name: name, x0: x0, x1: x0 += (d[name] / d.population) };
});
d.incomePerCapita = d.income / d.population;
// lottery apportionments share of income
var x0 = 0;
d.apportionmentsShare = apportionment_names
.map(function(name) {
return { name: name, x0: x0, x1: x0 += (d[name] / d.income) };
});
});
svg.call(render, data, "raw", 0);
d3.select("form").on("change", function() {
var variable = event.target.value;
svg.call(render, data, variable, 1000);
});
function render(selection, data, variable, duration) {
if (variable === "raw") {
var sorter = function(a, b) { return a.income - b.income; },
xMax = d3.max(data, function(d) { return d.income; }),
dataAccessor = function(d) { return d.apportionments; },
labelText = "Lottery Income";
axis.x = axis.x.tickFormat(d3.format("$,"));
scale.x.range([0, width]);
}
else if (variable === "perCapita") {
var sorter = function(a, b) { return a.incomePerCapita - b.incomePerCapita; },
xMax = d3.max(data, function(d) { return d.incomePerCapita; }),
dataAccessor = function(d) { return d.apportionmentsPerCapita; },
labelText = "Lottery Income Per Capita";
axis.x = axis.x.tickFormat(d3.format("$.2r"));
scale.x.range([0, width]);
}
else if (variable === "share") {
var sorter = function(a, b) {
return a.apportionmentsShare[0].x1 - b.apportionmentsShare[0].x1;
},
xMax = d3.max(data, function(d) { return 1; }),
dataAccessor = function(d) { return d.apportionmentsShare; }
labelText = "Share of Lottery Income";
axis.x = axis.x.tickFormat(d3.format(",%"));
scale.x.range([0, width - 200]);
}
data.sort(sorter);
scale.x.domain([0, xMax]);
scale.y.domain(data.map(function(d) { return d.title; }));
scale.color(apportionment_names);
selection.select(".x.axis")
.transition().duration(duration).call(axis.x)
.select(".label")
.text(labelText);
selection.select(".y.axis")
.transition().delay(duration).duration(duration).call(axis.y);
var state = selection.selectAll(".state")
.data(data, function(d) { return d.title; });
state.enter().append("g")
.attr("class", "state");
state
.transition().delay(duration).duration(duration)
.attr("transform", function(d) {
return "translate(0," + scale.y(d.title) + ")";
});
var rects = state.selectAll("rect").data(dataAccessor);
rects.enter().append("rect");
rects
.transition().duration(duration)
.attr("x", function(d) { return scale.x(d.x0); })
.attr("width", function(d) { return scale.x(d.x1) - scale.x(d.x0); })
.attr("height", scale.y.rangeBand())
.style("fill", function(d) { return scale.color(d.name); });
var legend = svg.selectAll(".legend")
.data(apportionment_names);
legend.enter().append("g")
.attr("class", "legend")
.attr("transform", function(d, i) {
return "translate(0," + i*20 + ")";
})
.each(function(d) {
var legendNames = {
"toProceedsAvailable": "To Government",
"toAdministration": "Administration Cost",
"toPrize": "To Prize Winner"
};
d3.select(this).append("rect")
.attr("x", width - 18)
.attr("y", 50)
.attr("width", 18)
.attr("height", 18)
.style("fill", scale.color);
d3.select(this).append("text")
.attr("x", width - 24)
.attr("y", 50 + 9)
.attr("dy", ".35em")
.attr("text-anchor", "end")
.text(function(name) { return legendNames[name]; });
});
}
});
</script>
</body>
</html>
GEO.id GEO.id2 GEO.display-label GC.target-geo-id GC.target-geo-id2 GC.display-label GC.display-label L001 L002 L003 L004
Id Id2 Geography Target Geo Id Target Geo Id2 Government Government Income (1) Apportionment of Funds - Prizes Apportionment of Funds - Administration Apportionment of Funds - Proceeds Available
0100000US United States 0100000US United States United States 62383863 38792861 3208968 20382034
0100000US United States 0400000US01 1 United States - Alabama Alabama X X X X
0100000US United States 0400000US02 2 United States - Alaska Alaska X X X X
0100000US United States 0400000US04 4 United States - Arizona Arizona 645853 426143 43007 176703
0100000US United States 0400000US05 5 United States - Arkansas Arkansas 414561 292124 34771 87666
0100000US United States 0400000US06 6 United States - California California 4445874 2652095 224063 1569716
0100000US United States 0400000US08 8 United States - Colorado Colorado 524074 345640 39621 138813
0100000US United States 0400000US09 9 United States - Connecticut Connecticut 1059930 699063 43292 317575
0100000US United States 0400000US10 10 United States - Delaware Delaware 452962 99264 44509 309189
0100000US United States 0400000US12 12 United States - Florida Florida 4741570 3162889 147588 1431093
0100000US United States 0400000US13 13 United States - Georgia Georgia 3407047 2332453 145606 928988
0100000US United States 0400000US15 15 United States - Hawaii Hawaii X X X X
0100000US United States 0400000US16 16 United States - Idaho Idaho 182232 122888 11167 48177
0100000US United States 0400000US17 17 United States - Illinois Illinois 2832575 1743685 317697 771193
0100000US United States 0400000US18 18 United States - Indiana Indiana 870510 581346 63662 225502
0100000US United States 0400000US19 19 United States - Iowa Iowa 339252 200802 52564 85886
0100000US United States 0400000US20 20 United States - Kansas Kansas 230469 138555 19740 72174
0100000US United States 0400000US21 21 United States - Kentucky Kentucky 758665 494912 37764 225989
0100000US United States 0400000US22 22 United States - Louisiana Louisiana 422633 236159 25953 160521
0100000US United States 0400000US23 23 United States - Maine Maine 212886 143938 14880 54068
0100000US United States 0400000US24 24 United States - Maryland Maryland 2021118 1038476 340991 641651
0100000US United States 0400000US25 25 United States - Massachusetts Massachusetts 4565196 3523859 94327 947010
0100000US United States 0400000US26 26 United States - Michigan Michigan 2260945 1493438 70835 696672
0100000US United States 0400000US27 27 United States - Minnesota Minnesota 527007 365831 25392 135784
0100000US United States 0400000US28 28 United States - Mississippi Mississippi X X X X
0100000US United States 0400000US29 29 United States - Missouri Missouri 1116996 752964 50003 314029
0100000US United States 0400000US30 30 United States - Montana Montana 60188 32176 7991 20021
0100000US United States 0400000US31 31 United States - Nebraska Nebraska 170807 93092 17034 60681
0100000US United States 0400000US32 32 United States - Nevada Nevada X X X X
0100000US United States 0400000US33 33 United States - New Hampshire New Hampshire 263794 173357 15961 74476
0100000US United States 0400000US34 34 United States - New Jersey New Jersey 2663519 1631717 70859 883588
0100000US United States 0400000US35 35 United States - New Mexico New Mexico 139267 79548 18329 41390
0100000US United States 0400000US36 36 United States - New York New York 7697675 4218988 388580 3090107
0100000US United States 0400000US37 37 United States - North Carolina North Carolina 1570874 1024347 72220 474307
0100000US United States 0400000US38 38 United States - North Dakota North Dakota 26603 14217 4101 8285
0100000US United States 0400000US39 39 United States - Ohio Ohio 2531002 1668038 99872 763092
0100000US United States 0400000US40 40 United States - Oklahoma Oklahoma 200209 104463 23641 72105
0100000US United States 0400000US41 41 United States - Oregon Oregon 864231 206837 70198 587196
0100000US United States 0400000US42 42 United States - Pennsylvania Pennsylvania 3441263 2299006 72293 1069964
0100000US United States 0400000US44 44 United States - Rhode Island Rhode Island 539026 153206 6204 379616
0100000US United States 0400000US45 45 United States - South Carolina South Carolina 1114410 775453 37100 301857
0100000US United States 0400000US46 46 United States - South Dakota South Dakota 146536 32418 7767 106351
0100000US United States 0400000US47 47 United States - Tennessee Tennessee 1278328 720231 57068 501029
0100000US United States 0400000US48 48 United States - Texas Texas 4139450 2767359 181966 1190125
0100000US United States 0400000US49 49 United States - Utah Utah X X X X
0100000US United States 0400000US50 50 United States - Vermont Vermont 96067 64556 8619 22892
0100000US United States 0400000US51 51 United States - Virginia Virginia 1594265 1025175 80727 488363
0100000US United States 0400000US53 53 United States - Washington Washington 534041 339366 49954 144721
0100000US United States 0400000US54 54 United States - West Virginia West Virginia 713850 116230 32897 564723
0100000US United States 0400000US55 55 United States - Wisconsin Wisconsin 566103 329202 38155 198746
0100000US United States 0400000US56 56 United States - Wyoming Wyoming X X X X
GEO.id GEO.id2 GEO.display-label HD01_VD01 HD02_VD01
Id Id2 Geography Estimate Total Margin of Error Total
0400000US01 1 Alabama 4817678 *****
0400000US02 2 Alaska 728300 *****
0400000US04 4 Arizona 6561516 *****
0400000US05 5 Arkansas 2947036 *****
0400000US06 6 California 38066920 *****
0400000US08 8 Colorado 5197580 *****
0400000US09 9 Connecticut 3592053 *****
0400000US10 10 Delaware 917060 *****
0400000US11 11 District of Columbia 633736 *****
0400000US12 12 Florida 19361792 *****
0400000US13 13 Georgia 9907756 *****
0400000US15 15 Hawaii 1392704 *****
0400000US16 16 Idaho 1599464 *****
0400000US17 17 Illinois 12868747 *****
0400000US18 18 Indiana 6542411 *****
0400000US19 19 Iowa 3078116 *****
0400000US20 20 Kansas 2882946 *****
0400000US21 21 Kentucky 4383272 *****
0400000US22 22 Louisiana 4601049 *****
0400000US23 23 Maine 1328535 *****
0400000US24 24 Maryland 5887776 *****
0400000US25 25 Massachusetts 6657291 *****
0400000US26 26 Michigan 9889024 *****
0400000US27 27 Minnesota 5383661 *****
0400000US28 28 Mississippi 2984345 *****
0400000US29 29 Missouri 6028076 *****
0400000US30 30 Montana 1006370 *****
0400000US31 31 Nebraska 1855617 *****
0400000US32 32 Nevada 2761584 *****
0400000US33 33 New Hampshire 1321069 *****
0400000US34 34 New Jersey 8874374 *****
0400000US35 35 New Mexico 2080085 *****
0400000US36 36 New York 19594330 *****
0400000US37 37 North Carolina 9750405 *****
0400000US38 38 North Dakota 704925 *****
0400000US39 39 Ohio 11560380 *****
0400000US40 40 Oklahoma 3818851 *****
0400000US41 41 Oregon 3900343 *****
0400000US42 42 Pennsylvania 12758729 *****
0400000US44 44 Rhode Island 1053252 *****
0400000US45 45 South Carolina 4727273 *****
0400000US46 46 South Dakota 834708 *****
0400000US47 47 Tennessee 6451365 *****
0400000US48 48 Texas 26092033 *****
0400000US49 49 Utah 2858111 *****
0400000US50 50 Vermont 626358 *****
0400000US51 51 Virginia 8185131 *****
0400000US53 53 Washington 6899123 *****
0400000US54 54 West Virginia 1853881 *****
0400000US55 55 Wisconsin 5724692 *****
0400000US56 56 Wyoming 575251 *****
0400000US72 72 Puerto Rico 3638965 *****
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment