2017-10-14 155 views
0

我想使用d3.nest()從csv創建一個嵌套的json文件,但是,我無法獲得嵌套權限。我的輸出是這樣的: enter image description hered3.nest()將csv轉換爲json

這是接近但不quite-我希望值是 關鍵 值: 0:等 1:等

這裏是我的代碼:

d3.csv( 「數據/ FIFA-matches.csv」,功能(錯誤,matchesCSV){

//Loads in the tree information from fifa-tree.csv and calls createTree(csvData) to render the tree. 
    matchesCSV.forEach(function(d, i) { 

     this.teamData = d3.nest() 
      .key(function(d) { 
       return d.Team; 
      }) 

     .rollup(function(d) { 
       return { 
        Result: { 'Label': d.Result, 'Rank': 'test' }, 

        // total: d3.sum(v, function(d) { return d.amount; }), 
        // avg: d3.mean(v, function(d) { return d.amount; }) 
       } 
      }) 
      .entries(matchesCSV); 
     console.log(this.teamData); 
    }); 

    d3.csv("data/fifa-tree.csv", function(error, treeCSV) { 

     //Create a unique "id" field for each game 
     treeCSV.forEach(function(d, i) { 
      //console.log(d); 
      d.id = d.Team + d.Opponent + i; 
      d.type = d.Type; 


     }); 

在正確的方向任何信息將非常感謝!

這裏是CSV結構的一個例子:

隊的對手,目標方面,失球,臺達目標,勝,負,結果 巴西,德國,1,7,-6,0 ,1,半決賽 德國,阿根廷,1,0,1,1,0,獲勝者 阿根廷,荷蘭,0,0,0,1,0,半決賽 荷蘭,巴西,3,0,3,1 ,0,第四名 巴西,哥倫比亞,2,1,1,1,0,四分之一決賽 法國,德國,0,1,-1,0,1,四分之一決賽

+0

請,更好地解釋你所期望的結果是什麼(最好是顯示陣列的確切結構),現在它不完全明確。另外,請複製/粘貼CSV的幾行(包含標題),以便我們可以提供**正在運行的**解決方案。 –

回答

1

如果你想指定什麼是在對應於某個鍵的每個對象中,您都可以n使用.rollup()功能

this.teamData = d3.nest() 
    .key(function(d) { 
     return d.Team; 
    }).rollup(function(match_object) { 
     return { 
      opponent: match_object[0]["Opponent"], 
      Goals Made: match_object[0]["Goals Made"], 
      ..etc... 
}).entries(matchesCSV); 

,並從treeCSV返回數組

function ReturnTeam(teamname){ 
    for(team in treeCSV) { 
     if(teamname === team.Name) { 
      return team; 
     } 
    } 
} 
+0

嘿謝謝你的答覆 - 會匹配對象是一個單獨的對象,將提供數據或我能夠通過'D'通過? – jrogers12

+0

沒問題:)'match_object'和'd'是同一件事的不同名稱,我只是認爲'match_object'更具描述性 –

+0

啊,這是有道理的。所以彙總的結構非常好,但值不確定。彙總期間我如何訪問數據有什麼問題嗎? – jrogers12