[英]Can I normalise CSV data with D3?
我的原始CSV中有這種數據:
id, lat, long, data_type_1, data_type_2, data_type_3
1 , 50, 1, 10, 20, 40
我需要將其轉換為這種結構:
id, lat, long, data_type, value,
1 , 50, 1, 1, 10,
1 , 50, 1, 2, 20,
1 , 50, 1, 3, 40,
我已經從bl.ocks.org頁面上捏過/修改了這段代碼。
d3.csv("traffic_data.csv", function(d) {
numericColHeaders.forEach(header => d[header] = parseInt(d[height]));
console.error(d); // to inspect in the console
return d;
}, function(error, data) {
if (error) throw error;
var root = d3.stratify()
.id(function(d) {
return d.data_type;
})
.parentId(function(d) {
return d.id;
})
(data)
.sum(function(d) {
return d.value;
})
.sort(function(a, b) {
return b.height - a.height || b.value - a.value;
});
treemap(root);
// do more stuff
})
當我用控制台處理數據時,它會打印一行,但是要使我的數據規范化,我需要將其“擴展”為多行,而我不知道該怎么做。 我想不出如何使用map
, filter
或reduce
...。如果有什么需要,與reduce相反。
我該如何實現?
您可以在不使用內置map
D3的情況下執行此操作,並reduce
功能:
rows.map(row => {
const { id, lat, long, data_type_1, data_type_2, data_type_3 } = row
return [
{
id, lat, long,
data_type: '1',
value: data_type_1
},
{
id, lat, long,
data_type: '2',
value: data_type_2
},
{
id, lat, long,
data_type: '3',
value: data_type_3
}
]
}).reduce((prev, next) => prev.concat(next), [])
long
一直是保留字,因此此代碼無法完全正常工作。 但是應該給你正確的想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.