2013-03-29 48 views
1

我使用下面的代碼組合兩個CSV的(D3)

d3.csv("sqrt100train.csv", function(error, data2) { 
    d3.csv("sqrt100test.csv", function(error, data) { 

sqrt100train看起來像這樣同時加載兩個CSV文件:

Trees Train 
    1 0.059286 
    2 0.057857 
    3 0.032857 
    4 0.03619 
    5 0.022619 

和sqrt100test看起來是這樣的:

Trees Test 
    1 0.072222 
    2 0.072778 
    3 0.044444 
    4 0.049444 
    5 0.042778 

我如何結合這些陣列得到這個:

Trees Train Test 
    1 0.059286 0.072222 
    2 0.057857 0.072778 
    3 0.032857 0.044444 
    4 0.036190 0.049444 
    5 0.022619 0.042778 

回答

1

如果你想創建新的數組:

var newArray = []; 
for(var i = 0; i < data.length; i++) { 
    newArray.push({Trees: data[i].Trees, 
        Train: data[i].Train, 
        Test: data2[i].Test}); 
} 
+0

完美。謝謝! – user1956609

5

問題:長度或X值是不同的

serie1 
X, Y 
1, 11 
3, 13 
5, 15 
6, 16 

serie2 
X, Y 
1, 21 
2, 22 
4, 24 
6, 26 
7, 27 

BothSeries 
X, Y1, Y2 
1, 11, 21 
2, , 22 
3, 13, 
4, , 24 
5, 15, 
6, 16, 26 
7, , 27 

此代碼修復它。

var serie1 = []; 
var serie2 = []; 
var BothSeries = [[null,null,null]]; 


function merge() { 
    BothSeries = []; 
    var i, j, aux; 
    //copy serie1 a BothSeries 
    if(serie1.length!=0){ 
     for (var i = 0; i < serie1.length; i++) { 
      //null represent the serie2 value 
      BothSeries[i] = [serie1[i][0], serie1[i][1],null]; 
     } 
    } 
    //set the value Y of serie2 in the BothSeries when their X are equals. 
    if(serie2.length!=0){ 
     for (var i = 0; i < serie2.length; i++) { 
      for (var j = 0; j < BothSeries.length; j++) { 
       if(BothSeries[j][0] == serie2[i][0]){ 
        BothSeries[j][2] = serie2[i][1]; 
       } 
      } 
     } 
    } 
    //set the value X and Y of serie2 in the BothSeries when their X aren't equals or doesn't exist. 
    var cont=0; 
    if(serie2.length!=0){ 
     for (var i = 0; i < serie2.length; i++) { 
      for (var j = 0; j < BothSeries.length; j++) { 
       if(BothSeries[j][0] != serie2[i][0]){ 
        cont++; 
       } 
      } 
      if(cont==BothSeries.length) 
      { 
       BothSeries[BothSeries.length] = [serie2[i][0],null,serie2[i][1]]; 
      } 
      cont=0; 
     } 
    } 
    //order with bubble method by X 
    if(BothSeries.length!=0){ 
     for(i=0;i<BothSeries.length-1;i++){ 
      for(j=0;j<BothSeries.length-i-1;j++){ 
       if(BothSeries[j+1][0] < BothSeries[j][0]) 
       { 
        aux=BothSeries[j+1]; 
        BothSeries[j+1]=BothSeries[j]; 
        BothSeries[j]=aux; 
       } 
      } 
     } 
    } 
}