gpt4 book ai didi

javascript - SQL 与 JavaScript 中 2 个时间序列的相交

转载 作者:行者123 更新时间:2023-11-28 04:19:25 34 4
gpt4 key购买 nike

我想比较在 SQL 和 JavaScript 前端中进行“时间序列交集”的可行性。

假设我在这两种情况下都有这个起点:

//TimeSeries X
id, year, value
A, 2014, 5
B, 2014, 6

//TimeSeries Y
id, year, value
B, 2014, 334

为了散点图,我需要构建一个新表,其中包含每个实体和年份的 x 和 y 值。在这种情况下,生成的表将只有 1 行。

id, year, x, y
B, 2014, 6, 334

1) 实现此目的的 SQL 语法是什么?

2) JavaScript 的等价物是什么,例如使用 Lodash?

最佳答案

应该使用简单的连接来执行

Select table1.year, table1.value as x, table2.value as y from table1 join table2 on table1.year=table2.year;

我不推荐 JavaScript 实现。 Javascript 不应该用于长时间运行的操作,尤其是服务器端。

但在我看来,用 javascript 实现它的首选方法是:

function intersection(xs, ys) {
xs.sort((e1, e2) => e1.year - e2.year);
ys.sort((e1, e2) => e1.year - e2.year);
let output = []
/*
Notice that this function has side effects as it removes elements from the input arrays
if you want to preserve the input arrays, try cloning them instead
*/
while (xs.length > 0 && ys.length > 0) {
if (xs[0].year == ys[0].year) {
// if the two first elements have matching years, add element to output
// notice the use of shift which remove the elements from the beginning of the arrays
output.push({year: xs[0].year, x: xs.shift().value, y: ys.shift().value})
} else if (xs[0].year < ys[0].year) {
// if xs' year is smaller, peel the x
xs.splice(0, 1);
} else {
// else peel the y value
ys.splice(0, 1);
}
}
return output;
}

关于javascript - SQL 与 JavaScript 中 2 个时间序列的相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45563554/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com