如何在JavaScript中获得时间序列上两个值之间的差异?

如何在JavaScript中获得时间序列上两个值之间的差异?,javascript,csv,date,Javascript,Csv,Date,在Python中,这很容易,但在JavaScript中,这让我非常头疼 我使用的是Chart.js、D3和Date FNS。我正在使用CSV。你可以检查我的CSV文件 我想得到每天病例数或死亡数的差异,因此理论上我可以得到每天新病例数或死亡数,而不是总病例数。我的意思是使用算术运算符每两天重新采样一次。只是减法让我头疼 类似于Python的Pandas的diff(),问题如下: , 有人建议我使用map()和reduce(),但没有任何效果 受此启发,我尝试: const DailyDe

在Python中,这很容易,但在JavaScript中,这让我非常头疼

我使用的是Chart.js、D3和Date FNS。我正在使用CSV。你可以检查我的CSV文件

我想得到每天病例数或死亡数的差异,因此理论上我可以得到每天新病例数或死亡数,而不是总病例数。我的意思是使用算术运算符每两天重新采样一次。只是减法让我头疼

类似于Python的Pandas的
diff()
,问题如下:

  • ,
有人建议我使用
map()
reduce()
,但没有任何效果

受此启发,我尝试:

const DailyDeathsData=dates.map((d,pair)=>
{
var firstVal=parseInt(d.totaldeath[pair]);
var secondVal=parseInt(d.totaldeath[pair+1]);
var daily=(firstVal>secondVal)?firstVal-secondVal:secondVal-firstVal;
每天返回;
});
但它返回了全零

然后,受启发,使用
slice
map
reduce

const DailyDeathsData=dates.slice(1).map((v,i)=>v.totaldeathes-dates[i].totaldeathes);
它还返回了所有零

然后,使用
reduce

const DailyDeathsData=dates.reduce((v1,v2)=>{return v1.totalDeaths-v2.totalDeaths});

但是它没有显示。

如果我正确理解了您想要实现的目标,您可以执行类似的操作:

const数据=[{
城市:“阿帕雷西达”,
日期:“2021-01-04”,
死亡总数:21人,
总数:781,
总数:724,
病床总数:13张,
插管:1
},
{
城市:“阿帕雷西达”,
日期:“2021-01-05”,
死亡总数:22人,
总数:822,
总数:724,
病床总数:8张,
插管:3
},
{
城市:“阿帕雷西达”,
日期:“2021-01-06”,
死亡总数:22人,
总数:831,
总数:724,
总数:11,
插管:2
},
{
城市:“阿帕雷西达”,
日期:“2021-01-07”,
死亡总数:22人,
总数:847,
总数:724,
床位总数:15张,
插管:2
},
{
城市:“阿帕雷西达”,
日期:“2021-01-10”,
死亡总数:22人,
总数:857,
总数:724,
床位总数:16张,
插管:4
}
];
const totalDeathsCurve=data.map((项目,索引)=>{
if(index==0)返回0;
返回数据[index].totalDeaths-data[index-1].totalDeaths
});

控制台日志(totalDeathsCurve)只是一个旁注:如果
d.totalDeaths[pair]
表示从记录开始到第X天的死亡人数,而
d.totalDeaths[pair+1]
表示从记录开始到第X+1天的死亡人数,则检查
(firstVal>secondVal)
是没有意义的,因为
secondVal
将始终大于或等于
firstVal
(除非人们开始以僵尸XP的身份从死亡中复活)。我使用此条件是因为负减法,例如,21次死亡-23次死亡=-2天。我刚刚消除了这种情况并进行了测试。它返回了全部零。
d.TotalDeathes[pair]
是从第1天到第X天的死亡总数吗?如果是,您知道从第1天到第X天的总死亡人数不能大于从第1天到第X+1天的死亡人数。随着时间的推移,从第一天开始死亡的总人数只能增加或保持稳定;它不能减少。能减少的是每天的死亡人数。这是你想要达到的目标吗?我比较了JavaScript和Python中的图形结果。“没错,”塞肯说。把你的答案放在我总结的地方。我也使用了
d[pair].TotalDeatments
,但我现在明白了,它必须是
dates
,而不是
d
,现在才有意义。