下面的javascript代码片段加载一个名为numericalData.csv的csv文件。然后,它以google visualization table格式显示数据
如何将数值数据转换为浮点型或整型等数值。目前,使用下面的代码,它将它们读取为一个字符串,因此升序和降序排序到处都是(参见下面的屏幕截图)。
google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);
function drawTable() {
var csvData = loadFile("numericalData.csv", ",");
var csvParsedData = CSVToArray(csvData);
data = google.visualization.arrayToDataTable(csvParsedData);
var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, {allowHtml: true, showRowNumber: true});
}
发布于 2013-12-30 16:13:47
如果数组csvParsedData
包含字符串而不是数字,这就是我期望看到的结果。首先,检查您的CSV以确保您的数字没有被引用。如果不是,则CSVtoArray函数没有正确地解析数字。您可以根据需要对csvParsedData
数组中的每个值调用parseInt
或parseFloat
来遍历数据,并将数组中的值设置为解析后的值。这里有一个简化的例子:
// parse all values in csvParsedData as int's
for (var i = 0; i < csvParsedData.length; i++) {
for (var j = 0; j < csvParsedData[i].length; j++) {
csvParsedData[i][j] = parseInt(csvParsedData[i][j]);
}
}
编辑:更新了处理不同数据类型的代码
下面是一些可以正确解析数据类型的代码:
// columns is an array of data types corresponding to the data types of each column in the CSV array
var columns = ['string', 'int', 'float', 'int', 'int', 'float'];
// parse all values in csvParsedData as the appropriate data type
for (var i = 0; i < csvParsedData.length; i++) {
for (var j = 0; j < csvParsedData[i].length; j++) {
switch columns[j] {
case 'int':
csvParsedData[i][j] = parseInt(csvParsedData[i][j]);
break;
case 'float':
csvParsedData[i][j] = parseFloat(csvParsedData[i][j]);
break;
case 'string':
break;
default:
// should never fire
}
}
}
您可以根据需要添加其他数据类型。
发布于 2013-12-30 21:44:14
我有一个N行x 5列的数组,并实现了一个出色的修复。现在我需要添加第六列,它下面只有字符串。
它应该是这样的
Value1 | Value2 | Value3 | Value4 | Value5 | String |
1.234 3.5 4.2 2.1 2.2 Banana
使用下面的当前代码,它是
Value1 | Value2 | Value3 | Value4 | Value5 |
1.234 3.5 4.2 2.1 2.2
代码
var csvParsedData = CSVToArray(csvData);
// parse all values in csvParsedData as int's
for (var i = 0; i < csvParsedData.length; i++) {
for (var j = 0; j < csvParsedData[i].length; j++) {
csvParsedData[i][j] = parseFloat(csvParsedData[i][j]);
}
}
//data = google.visualization.arrayToDataTable(csvParsedData);
var data = new google.visualization.DataTable();
data.addColumn('number','Value1');
data.addColumn('number','Value2');
data.addColumn('number','Value3');
data.addColumn('number','Value4');
data.addColumn('number','Value5');
for (var j = 0; j < csvParsedData.length-1; j++){
data.addRows([csvParsedData[j]]);
}
https://stackoverflow.com/questions/20815590
复制