mirror of
https://github.com/johnkerl/miller.git
synced 2026-01-23 02:14:13 +00:00
* Fatal-on-data-error `mlr -x` option [WIP] * arithmetic.go error-reason propagation * more * more * more * renames * doc page * namefix * fix broken test * make dev
70 lines
2.2 KiB
Text
70 lines
2.2 KiB
Text
----------------------------------------------------------------
|
|
* look at: mr -vvv test/cases/io-spec-tsv/0004/cmd
|
|
|
|
----------------------------------------------------------------
|
|
|
|
func (keeper *PercentileKeeper) EmitNamed(name string) *mlrval.Mlrval {
|
|
if name == "min" {
|
|
return keeper.EmitNonInterpolated(0.0)
|
|
} else if name == "p25" {
|
|
return keeper.EmitNonInterpolated(25.0)
|
|
} else if name == "median" {
|
|
return keeper.EmitNonInterpolated(50.0)
|
|
} else if name == "p75" {
|
|
return keeper.EmitNonInterpolated(75.0)
|
|
} else if name == "max" {
|
|
return keeper.EmitNonInterpolated(100.0)
|
|
|
|
} else if name == "iqr" {
|
|
p25 := keeper.EmitNonInterpolated(25.0)
|
|
p75 := keeper.EmitNonInterpolated(75.0)
|
|
if p25.IsNumeric() && p75.IsNumeric() {
|
|
return bifs.BIF_minus_binary(p75, p25)
|
|
} else {
|
|
return mlrval.VOID
|
|
}
|
|
|
|
} else if name == "lof" {
|
|
p25 := keeper.EmitNonInterpolated(25.0)
|
|
iqr := keeper.EmitNamed("iqr")
|
|
if p25.IsNumeric() && iqr.IsNumeric() {
|
|
return bifs.BIF_minus_binary(p25, bifs.BIF_times(fenceOuterK, iqr))
|
|
} else {
|
|
return mlrval.VOID
|
|
}
|
|
|
|
} else if name == "lif" {
|
|
p25 := keeper.EmitNonInterpolated(25.0)
|
|
iqr := keeper.EmitNamed("iqr")
|
|
if p25.IsNumeric() && iqr.IsNumeric() {
|
|
return bifs.BIF_minus_binary(p25, bifs.BIF_times(fenceInnerK, iqr))
|
|
} else {
|
|
return mlrval.VOID
|
|
}
|
|
|
|
} else if name == "uif" {
|
|
p75 := keeper.EmitNonInterpolated(75.0)
|
|
iqr := keeper.EmitNamed("iqr")
|
|
if p75.IsNumeric() && iqr.IsNumeric() {
|
|
return bifs.BIF_plus_binary(p75, bifs.BIF_times(fenceInnerK, iqr))
|
|
} else {
|
|
return mlrval.VOID
|
|
}
|
|
|
|
} else if name == "uof" {
|
|
p75 := keeper.EmitNonInterpolated(75.0)
|
|
iqr := keeper.EmitNamed("iqr")
|
|
if p75.IsNumeric() && iqr.IsNumeric() {
|
|
return bifs.BIF_plus_binary(p75, bifs.BIF_times(fenceOuterK, iqr))
|
|
} else {
|
|
return mlrval.VOID
|
|
}
|
|
|
|
} else {
|
|
return mlrval.FromError(
|
|
errors.New(
|
|
"stats1: unrecognized
|
|
),
|
|
)
|
|
}
|
|
}
|