df_nsmallest_real Function

public function df_nsmallest_real(df, n, col_index) result(result_df)

Return dataframe with n smallest values in a real column

Arguments

Type IntentOptional Attributes Name
type(data_frame), intent(in) :: df
integer, intent(in) :: n
integer, intent(in) :: col_index

Return Value type(data_frame)


Source Code

    function df_nsmallest_real(df, n, col_index) result(result_df)
        type(data_frame), intent(in) :: df
        integer, intent(in) :: n
        integer, intent(in) :: col_index
        type(data_frame) :: result_df

        type(data_frame) :: sorted_df
        integer :: n_rows

        if (col_index < 1 .or. col_index > df % ncols()) error stop "column index out of range"
        if (df % dtype(col_index) /= REAL_NUM) error stop "column is not real type"

        ! Sort ascending
        sorted_df = df_copy(df)
        call df_sort_by_column(sorted_df, col_index, .true.)

        ! Take first n rows
        n_rows = min(n, sorted_df % nrows())
        result_df = df_slice_rows(sorted_df, 1, n_rows)

        call sorted_df % destroy()
    end function df_nsmallest_real