df_nlargest_integer Function

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

Return dataframe with n largest values in an integer 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_nlargest_integer(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) /= INTEGER_NUM) error stop "column is not integer type"

        ! Sort descending
        sorted_df = df_copy(df)
        call df_sort_by_column(sorted_df, col_index, .false.)

        ! 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_nlargest_integer