2017-03-23 6 views
1

私のCSVファイルデータをカラム名にキーとして取得するために、次のマップとフィルタ機能があります。マップとフィルタで辞書を作成していますか?

d3.csv("Sales Export Friendly 3-19-17.csv", function(data) { 
    sales = data 
     .map(sale => [ 
     sale["Unit Booked"], 
     new Date(sale["Booking Date"]).getMonth() + 1, 
     new Date(sale["Checkin"]).getMonth() + 1, 
     (new Date(sale["Checkout"]).valueOf() - new Date(sale["Checkin"]).valueOf())/(24*60*60*1000), 
     +sale["Total Stay"], 
     (+sale["Total Stay"])/((new Date(sale["Checkout"]).valueOf() - new Date(sale["Checkin"]).valueOf())/(24*60*60*1000)), 
     ]) 
     .filter(([unit, date, checkin, LOS, total, avgNight]) => !isNaN(total)); 

これは、ほとんどの目的のために動作しますが、私は、すなわちのD3多次元タイプ(並列座標)での軸としてそれらを参照するように列名を保持する方法を考え出したていません。マップとフィルターの使用と関係していると思いますか?

答えて

1

CSVファイルをロードすると、d3.csvcolumnsという便利な配列プロパティを作成します。 APIによれば

返される配列は、(反復順序は任意であるObject.keys、とは対照的に)入力された順にカラム名を含むcolumnsプロパティを公開します。

data.columns 

をまたは変数に代入:ここ

var myColumns = data.columns 

があるコールバックパラメータはdataを命名されているので

したがって、あなたは、単に使用して列の名前を取得することができます実際のCSVファイルを使ったデモをBostock's bl.ocks

d3.csv("https://gist.githubusercontent.com/mbostock/3887051/raw/805adad40306cedf1a513c252ddd95e7c981885a/data.csv", function(data){ 
 
    console.log(data.columns); 
 
});
<script src="https://d3js.org/d3.v4.min.js"></script>

PS:この答えは質問に、特に明記しない限り、答えをデフォルトバージョンである必要がありD3のV4を指します。

+0

ありがとうございました。これは私の移動に役立ちました。私はあなたがそこに助けることができる場合は、今すぐ日付の列を解析するいくつかの助けが必要です: http://stackoverflow.com/questions/42990052/parsing-dates-using-time-in-d3 –

関連する問題