medianByOrNull

inline fun <T, reified R : Comparable<R & Any>?> DataColumn<T>.medianByOrNull(skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R): T?

Returns the element of this DataColumn at the median of the values that the given selector returns for each element, or null if there is nothing to compute the median of.

The result of the expression is considered the 'input' of this operation.

Only self-comparable values are supported: values of a type T : Comparable<T> that are mutually comparable (like strings, primitive numbers, or dates). This includes all primitive number types, but no mix of different number types, which would result in a ClassCastException.

null values in the input are always ignored.

Which value lies at the median is determined using quantile estimation method R3, so no interpolation takes place, not even for numbers. If skipNaN is false and NaN values are encountered, the first one with a NaN value is selected.

Currently, only the default quantile estimation methods can be used. In the future, it might become possible to choose a different one, see #1121.

Returns null when there is nothing to compute the median of, for instance, when the input is empty or contains only null values.

Don't confuse medianByOrNull with medianOfOrNull, which returns the median selector value itself instead of the element it belongs to.

See also:

  • medianBy — throws instead of returning null for a column with nothing to compute the median of.

  • percentileByOrNull — the element at any other percentile of the values a selector returns.

  • The Median Operation — an overview of all median modes.

For more information: See median on the documentation website.

Example

// The first name of median length in the "name"/"firstName" column,
// or `null` if the column is empty
df.name.firstName.medianByOrNull { it.length }

Return

The element at the median of the values selector returns, or null if there are no values to compute the median of.

Parameters

skipNaN

If true, NaN values are ignored, just like null values. If false (the default), a NaN in the input is propagated to the result. This only has an effect on Double and Float values.

selector

A function that returns the value to compare for each element of this column.


inline fun <T, reified C : Comparable<C & Any>?> DataFrame<T>.medianByOrNull(skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression<T, C>): DataRow<T>?

Returns the row of this DataFrame at the median of the values that the given expression returns for each row, or null if there is nothing to compute the median of.

The given RowExpression is evaluated for each row of the dataframe. The row is both the receiver and the argument (it) of the expression, so the values in it can be accessed directly.

For more information: See RowExpression on the documentation website.

The result of the expression is considered the 'input' of this operation.

Only self-comparable values are supported: values of a type T : Comparable<T> that are mutually comparable (like strings, primitive numbers, or dates). This includes all primitive number types, but no mix of different number types, which would result in a ClassCastException.

null values in the input are always ignored.

Which value lies at the median is determined using quantile estimation method R3, so no interpolation takes place, not even for numbers. If skipNaN is false and NaN values are encountered, the first one with a NaN value is selected.

Currently, only the default quantile estimation methods can be used. In the future, it might become possible to choose a different one, see #1121.

Returns null when there is nothing to compute the median of, for instance, when the input is empty or contains only null values.

Don't confuse medianByOrNull with medianOfOrNull, which returns the median expression value itself instead of the row it belongs to.

See also:

  • medianBy — throws instead of returning null when there's nothing to compute the median of.

  • percentileByOrNull — the row at any other percentile of the values a row expression returns.

  • The Median Operation — an overview of all median modes.

For more information: See median on the documentation website.

Example

// The row with the median "age", or `null` if this dataframe is empty
df.medianByOrNull { age }

Return

The DataRow at the median of the values expression returns, or null if there are no values to compute the median of.

Parameters

skipNaN

If true, NaN values are ignored, just like null values. If false (the default), a NaN in the input is propagated to the result. This only has an effect on Double and Float values.

expression

The RowExpression to compute the value to compare the rows by.


fun <T> DataFrame<T>.medianByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow<T>?

Returns the row of this DataFrame at the median of the values in the column with the given name, or null if there is nothing to compute the median of.

Only self-comparable values are supported: values of a type T : Comparable<T> that are mutually comparable (like strings, primitive numbers, or dates). This includes all primitive number types, but no mix of different number types, which would result in a ClassCastException.

null values in the input are always ignored.

Which value lies at the median is determined using quantile estimation method R3, so no interpolation takes place, not even for numbers. If skipNaN is false and NaN values are encountered, the first one with a NaN value is selected.

Currently, only the default quantile estimation methods can be used. In the future, it might become possible to choose a different one, see #1121.

Returns null when there is nothing to compute the median of, for instance, when the input is empty or contains only null values.

Don't confuse medianByOrNull with medianOrNull, which returns the median value itself instead of the row it belongs to.

See also:

  • medianBy — throws instead of returning null when there's nothing to compute the median of.

  • percentileByOrNull — the row at any other percentile of the values in a column.

  • The Median Operation — an overview of all median modes.

For more information: See median on the documentation website.

Example

// The row with the median "age", or `null` if this dataframe is empty
df.medianByOrNull("age")

Return

The DataRow at the median of the values in the given column, or null if there are no values to compute the median of.

Parameters

column

The name of the column of this DataFrame to compare the rows by.

skipNaN

If true, NaN values are ignored, just like null values. If false (the default), a NaN in the input is propagated to the result. This only has an effect on Double and Float values.


inline fun <T, reified C : Comparable<C & Any>?> DataFrame<T>.medianByOrNull(column: ColumnReference<C>, skipNaN: Boolean = skipNaNDefault): DataRow<T>?
inline fun <T, reified C : Comparable<C & Any>?> DataFrame<T>.medianByOrNull(column: KProperty<C>, skipNaN: Boolean = skipNaNDefault): DataRow<T>?

Deprecated

It's recommended to migrate to the String or Extension Properties Access API https://kotlin.github.io/dataframe/apilevels.html