-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathreg_csv.js
More file actions
70 lines (67 loc) · 1.9 KB
/
Copy pathreg_csv.js
File metadata and controls
70 lines (67 loc) · 1.9 KB
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
var fs = require('fs'),
sylvester = require('sylvester'),
prompt = require('prompt'),
csv = require('fast-csv'),
ols = require('./ols.js');
var stream = fs.createReadStream(process.argv[2]),
data = [];
csv.fromStream(stream, {headers : true})
.on("data", function(d){
data.push(d);
})
.on("end", function(){
pickVars(data)
});
function pickVars(data){
var schema = {
properties: {
Y: {
description: "Select Y variable using index",
type:'number',
pattern: /^[0-9]+$/,
message: 'Please use the index number to select your Y variable',
required: true
},
X: {
description: "Select X variables using index. CTRL+C to stop",
type:'array',
minItems:1,
pattern: /^[0-9]+$/,
message: 'Please use the index numbers to select at least one X variable',
required: true
},
}
};
var headers = Object.keys(data[0]),
headerLen = headers.length,
dataLen = data.length;
for(var i = 0; i < headerLen; i++){
console.log(i+". "+headers[i]);
};
prompt.start();
prompt.get(schema,function(err,result){
var yKey = headers[result.Y],
xKeys = [],
xLen = result.X.length;
for(var i = 0; i < xLen; i++){
var thisXkey = headers[parseInt(result.X[i])];
if(thisXkey){
xKeys.push(thisXkey)
};
};
var robust = result.robust,
Xarr = [],
Yarr = [];
for(var i = 0; i < dataLen; i++){
Yarr.push([data[i][yKey]]);
var Xrow = [];
for(var j = 0; j < xLen; j++){
Xrow.push(data[i][xKeys[j]]);
};
Xarr.push(Xrow);
};
var X = $M(Xarr),
Y = $M(Yarr);
console.log(ols.reg(Y,X,xKeys));
});
};