这个问题变成了问答,因为我很难找到答案,并认为它对其他人可能有用
我有一个值的JavaScript 数组,需要在JavaScript中计算其Q2(第50个百分数,即MEDIAN),Q1(第25个百分位数)和Q3(第75个百分位数)值。
如何在javascript中找到数组的中值
这是我的阵列
var data = [
{ values: 4 },
{ values: 4 },
{ values: 4 },
{ values: 5 },
{ values: 2 },
{ values: 6 },
{ values: 6 },
{ values: 5 }
];
Run Code Online (Sandbox Code Playgroud)
我试过这段代码
function findMedian(m) {
var middle = m.length - 1 / 2;
if (m.length - 1 % 2 == 1) {
return m[middle];
} else {
return (m[middle - 1] + m[middle]) / 2.0;
}
}
Run Code Online (Sandbox Code Playgroud)
但它的回报NaN价值
我的计算公式是
找到数据的中位数.按升序排列数据.然后,在计算中位数时标记我们考虑其值的地方.
背景:我有一个如下表,我试图value根据每个created_date分区的滚动 30 天回溯来获取中位数city。
问题是我缺少某些城市的日期,因此bound by rows preceding在这种情况下不起作用。
注意:我确实有一个date-spine可以利用的表格,但不确定它在这里是否有帮助
| 创建日期 | 城市 | 价值 |
|---|---|---|
| 2018-08-30 | 夏洛特 | 374900 |
| 2018-08-31 | 夏洛特 | 272000 |
| 2018-09-10 | 夏洛特 | 1 |
| 2018-09-24 | 夏洛特 | 365000 |
| 2018-10-04 | 夏洛特 | 342000 |
| 2018-10-07 | 夏洛特 | 46万 |
| 2018-10-08 | 夏洛特 | 91000 |
| 2018-10-15 | 夏洛特 | 342000 |
| 2018-10-18 | 夏洛特 | 155000 |
| 2018-10-19 | 夏洛特 | 222000 |
| ... | ... | ... |
预期输出:
| 创建日期 | 城市 | 价值 | MOVING_MEDIAN_30_DAY |
|---|---|---|---|
| 2018-08-30 | 夏洛特 | 374900 | 374900 |
| 2018-08-31 | 夏洛特 | 272000 | 323450 |
| 2018-09-10 | 夏洛特 | 1 | 272000 |
| 2018-09-24 | 夏洛特 | 365000 | 318500 |
| 2018-10-04 | 夏洛特 | 342000 … |
javascript ×2
arrays ×1
jquery ×1
median ×1
percentile ×1
php ×1
snowflake-cloud-data-platform ×1
sql ×1
statistics ×1