1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/*
This script parses the big gun violence CSV and filters for lines containing a particular string.
479363,
2013-01-19,New Mexico,Albuquerque,2806 Long Lane,
5,0,
http://www.gunviolencearchive.org/incident/479363,
http://hinterlandgazette.com/2013/01/pastor-greg-griego-identified-victims-killed-nehemiah-griego-albuquerque-nm-shooting.html,
False,1,
gun_stolen,
0::Unknown||1::Unknown,
gun_type,
0::22 LR||1::223 Rem [AR-15],
incident_characteristics,
"Shot - Dead (murder, accidental, suicide)
||Mass Shooting (4+ victims injured or killed excluding the subject/suspect/perpetrator, one location)
||Domestic Violence",
latitude, location_description, longitude,
34.9791,,-106.716,
n_guns_involved, notes,
2,,
participant_age,
0::51||1::40||2::9||3::5||4::2||5::15,
participant_age_group,
0::Adult 18+||1::Adult 18+||2::Child 0-11||3::Child 0-11||4::Child 0-11||5::Teen 12-17,
participant_gender,
0::Male||1::Female||2::Male||3::Female||4::Female||5::Male,
participant_name,
0::Greg Griego||1::Sara Griego||2::Zephania Griego||3::Jael Griego||4::Angelina Griego||5::Nehemiah Griego,
participant_relationship,
5::Family,
participant_status,
"0::Killed||1::Killed||2::Killed||3::Killed||4::Killed||5::Unharmed, Arrested",
participant_type,
0::Victim||1::Victim||2::Victim||3::Victim||4::Victim||5::Subject-Suspect,
http://www.cbsnews.com/news/nehemiah-gringo-case-memorial-service-planned-for-family-allegedly-slain-by-new-mexico-teen/||
http://www.thewire.com/national/2013/01/teenager-reportedly-used-ar-15-kill-five-new-mexico/61199/||
http://bigstory.ap.org/article/officials-nm-teen-gunman-kills-5-inside-home||
http://www.huffingtonpost.com/2013/01/21/nehemiah-griego-teen-shoots-parents-3-children_n_2519359.html||
http://murderpedia.org/male.G/g/griego-nehemiah.htm||
http://hinterlandgazette.com/2013/01/pastor-greg-griego-identified-victims-killed-nehemiah-griego-albuquerque-nm-shooting.html,
10,14
*/
const fs = require('fs')
const parse = require('csv-parse')
const stringify = require('csv-stringify')
const search = "AR-15"
const fields = ("incident_id,date,state,city_or_county,"
+ "address,n_killed,n_injured,incident_url,source_url,"
+ "incident_url_fields_missing,congressional_district,"
+ "gun_stolen,gun_type,incident_characteristics,latitude,"
+ "location_description,longitude,n_guns_involved,notes,"
+ "participant_age,participant_age_group,participant_gender,"
+ "participant_name,participant_relationship,"
+ "participant_status,participant_type,"
+ "sources,state_house_district,state_senate_district")
.split(',')
.reduce((a,b,i) => {
a[b] = i
}, {})
const search = 'AR-15'
const regexp = new RegExp(search, 'i')
function test(row){
return row[fields.gun_type].match(regexp)
}
const input = fs.createReadStream('./data/gun_violence.csv')
const parser = parse()
const stringifier = stringify()
const output = fs.createWriteStream('./data/' + search + '.csv')
stream.on('readable', function() {
var buf;
while ((buf = stream.read()) !== null) {
parser.write(buf)
}
});
stream.on('finish', function(){
parser.end()
})
parser.on('readable', function(){
let record
while (record = parser.read()) {
if (test(record[fields])) {
stringifier.write(record)
}
}
})
parser.on('error', function(err){
console.error(err.message)
})
parser.on('end', function(){
stringifier.end()
})
stringifier.on('readable', function(){
let row;
while(row = stringifier.read()){
output.write(row)
}
})
stringifier.on('error', function(err){
// console.error(err.message)
})
stringifier.on('finish', function(){
output.end()
})
|