這是我的資料:
data =
[{ndc_description: "VIAGRA 50 MG TABLET", new_percent_change: 12.9, year: "2017"},
{ndc_description: "VIAGRA 50 MG TABLET", new_percent_change: 12.9, year: "2019"},
{ndc_description: "VIAGRA 50 MG TABLET", new_percent_change: 12.9, year: "2017"},
{ndc_description: "JANUVIA 100 MG TABLET", new_percent_change: 4.41, year: "2017"},
{ndc_description: "JANUVIA 100 MG TABLET", new_percent_change: 4.41, year: "2019"},
{ndc_description: "JANUVIA 100 MG TABLET",new_percent_change: 4.41, year: "2017"}]
我怎么能指兩個 ndc_description 中的每一個的 new_percent_change 和它的相對年份?我想在“年”之后添加另一列以包含計算值。
更新:我可以計算平均值
roll = d3.rollups(data, v => d3.mean(v, d => d.new_percent_change), d => d.year, d => d.ndc_description)
但我不知道如何將每個值分配給資料陣列。
uj5u.com熱心網友回復:
由于roll是具有均值的陣列陣列,因此您可以執行嵌套forEach回圈以找到正確的資料物件,tio 您將傳遞均值:
roll.forEach(yearArray => {
yearArray[1].forEach(description => {
const foundObj = data.filter(e => e.year === yearArray[0] && e.ndc_description === description[0]);
foundObj.forEach(obj => obj.mean = description[1])
})
});
這是一個演示,我更改了一些值,以便您可以看到正確的方法:
顯示代碼片段
const data = [{
ndc_description: "VIAGRA 50 MG TABLET",
new_percent_change: 10.9,
year: "2017"
},
{
ndc_description: "VIAGRA 50 MG TABLET",
new_percent_change: 12.3,
year: "2019"
},
{
ndc_description: "VIAGRA 50 MG TABLET",
new_percent_change: 12.9,
year: "2017"
},
{
ndc_description: "JANUVIA 100 MG TABLET",
new_percent_change: 8.41,
year: "2017"
},
{
ndc_description: "JANUVIA 100 MG TABLET",
new_percent_change: 5.41,
year: "2019"
},
{
ndc_description: "JANUVIA 100 MG TABLET",
new_percent_change: 4.41,
year: "2017"
}
];
const roll = d3.rollups(data, v => d3.mean(v, d => d.new_percent_change), d => d.year, d => d.ndc_description);
roll.forEach(yearArray => {
yearArray[1].forEach(description => {
const foundObj = data.filter(e => e.year === yearArray[0] && e.ndc_description === description[0]);
foundObj.forEach(obj => obj.mean = description[1])
})
});
console.log(data)
<script src="https://d3js.org/d3.v7.min.js"></script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/532083.html
