2016-01-18 41 views
0

我使用d3.nest.rollup來計算我的數據中的葉子。數據來自csv,並由d3轉換爲json。該CSV看起來是這樣的:如何計算d3嵌套匯總中的不同值?

Color,ID,Animal 
Green,1,Dog 
Red,2,Cat 
Red,3,Cat 
Red,3,Dog 

注意,ID#3有2組不同的動物,但我想指望在這個數據中的不同的ID,所以每個顏色應該返回數= 1

簡單彙總功能會返回所有葉子的計數,即1,1,2,而我需要按顏色進行分組並計數該組內的不同ID ...

回答

0

您需要執行一個兩級下一個(第一個顏色,然後在ID),並在第二組上捲起,如下所示:

var nested_data = d3.nest() 
.key(function(d) { return d.Color; }) 
.key(function(d) { return d.id; }) 
.rollup(function(ids) { 
    return ids.length; 
}) 
.entries(data); 

console.log(nested_data); 

,這將給你:

Console view of rolled-up and nested data

有上窩和彙總在這裏有很大的教程:http://bl.ocks.org/phoebebright/raw/3176159/

+0

謝謝!但是,這仍然給我紅色的長度= 2 ...而我需要得到紅色的長度= 1,因爲在紅色組中只有一個唯一的ID ... – Pavel

+0

對不起,我不太關注。在問題中使用CSV示例,「綠色」具有一個唯一ID(「1」),「紅色」具有兩個唯一ID(「2」和「3」)。我錯過了什麼嗎? –

+0

對!我似乎無法複製這實際的數據,其中有很多其他列......我需要在密鑰中包含ID列或可以以某種方式繞過它? – Pavel