Javascript d3统计数据(投票)并存储以供使用

Javascript d3统计数据(投票)并存储以供使用,javascript,Javascript,我有2000人的投票数据。每一行包含一系列投票,每一行代表两个选项中的一个(或两个选项都不是)。我试图将这些数据压缩成每个主题的总投票数 我有一个类似这样的例子: A C F B C E A D E 第一列是a和B之间的投票,第二列是C和D之间的投票。这应该可以做到: var parse=函数(url){ getCSV(url、函数(错误、数据){ //按行拆分数据,然后按逗号拆分每行 da

我有2000人的投票数据。每一行包含一系列投票,每一行代表两个选项中的一个(或两个选项都不是)。我试图将这些数据压缩成每个主题的总投票数

我有一个类似这样的例子:

 A         C         F
 B         C         E
 A         D         E

第一列是
a
B
之间的投票,第二列是
C
D
之间的投票。这应该可以做到:

var parse=函数(url){
getCSV(url、函数(错误、数据){
//按行拆分数据,然后按逗号拆分每行
data=data.split(“\n”).map(函数(行){returnline.split(“,”});
//我们想忽略前两个元素,因为它们是垃圾
var-mapping=groupOptions(数据[0]。切片(2));
//跳过第一行,因为这不是投票
data.slice(1).forEach(函数(行){
//跳过每行的前两个元素
//然后进行每一次“投票”
line.slice(2).forEach(函数(投票,i){
//如果“映射[i][0]”(我们的投票记录)等于“投票”,则记录它
if(映射[i][0]。name==投票){
映射[i][0]。个数+=1;
//还要明确检查是否对其他选项投了赞成票
//因为投票是可选的
}else if(映射[i][1]。name==投票){
映射[i][1],数+=1;
}
})
})
console.log(映射);
回归映射;
});
}
var groupOptions=函数(选项){
//此函数将提供一个字符串数组:
//[“A或B”、“C或D”…]
//我们希望将其简化为单个映射
返回选项。减少(函数(p,c){
//在“或”处拆分当前数组元素(以获取两个选项)
var持有人=c.分割(“或”);
//现在推送两个对象的数组,每个对象表示不同的选项
p、 推送([{name:holder[0],编号:0},{name:holder[1],编号:0}]);
返回p;
}, []);
}
var getCSV=函数(url,完成){
var req=新的XMLHttpRequest();
请求打开(“获取”,url);
req.onload=function(){返回done(null,req.response);}
req.onerror=函数(){返回完成(req.statusText,req.response);}
请求发送();
}
解析(“http://www.sfu.ca/~djr7/data/Round3.csv”);

我在下面贴了一个答案。告诉我是否根据您的规范分析了数据。