X
No rating

# A column sort routine

Anonym

In spreadsheet programs like Excel or LibreOffice, you can apply a sort on a column to every other column in the spreadsheet. IDL's SORT function doesn't provide this functionality, but with a little code, we can make it so. The function COLSORT (get the source code here) accepts a 2D array and the zero-based index of the column to sort on. By default, values are sorted in ascending order; a keyword can be set to sort in descending order. Here's an example of how the routine works. Start with a 4 x 5 array of numbers:

```IDL> a = round(randomu(seed, 4, 5) * 20.0)
IDL> print, 'Original array:', a, format='(a,/,4(i))'
Original array:
8           6          14          10
4           9          18           5
1          11          13          18
8           9          11           9
3          19           4          16```

Use COLSORT to perform a reverse sort on column index 1 (the second column) and extend the sort to the other columns in the array:

```IDL> sort_index = 1
IDL> b = colsort(a, sort_index, /reverse_sort)```

Check the result:

```IDL> print, 'Sorted (descending) array:', b, format='(a,/,4(i))'
Sorted (descending) array:
3          19           4          16
1          11          13          18
8           9          11           9
4           9          18           5
8           6          14          10```

This program could be extended to apply to rows and to arrays of higher dimensionality.

PRODUCTS

SOLUTIONS

LEARN