Return dataframe with n largest values in an integer column
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(data_frame), | intent(in) | :: | df | |||
integer, | intent(in) | :: | n | |||
integer, | intent(in) | :: | col_index |
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