unique

Purpose

Sorts and removes duplicate elements from a vector.

Format

y = unique(x[, flag])
Parameters:
  • x (NxM numeric matrix or NxM character data, or NxM string array.) – data

  • flag (scalar) – Optional input, 1 if numeric data, 0 if character data. Default is 1. string array does not need a flag.

Returns:

y (Mx1 vector) – sorted x with the duplicates removed.

Examples

Numeric

// Create a column vector with duplicate elements
years = { 1632,
          2012,
          1709,
          1812,
          1709,
          1989,
          1830,
          1875,
          1912,
          1912,
          1924,
          1960 };

// Sort 'years' and remove any duplicate elements
years_unique = unique(years);

After the code above, the variables years and years_unique are assigned as follows:

         1632
         2012                  1632
         1709                  1709
         1812                  1812
         1709                  1830
years =  1989   years_unique = 1875
         1830                  1912
         1875                  1924
         1912                  1960
         1912                  1989
         1924                  2012
         1960

Numeric Matrix

// Create a numeric matrix with duplicate elements
years = { 1632          2012,
          1709           1812,
          1709           1989,
          1830           1875,
          1912           1912,
          1924           1960 };

// Sort 'years' and remove any duplicate elements
years_unique = unique(years);
print "years: " years;
print;
print "years_unique:" years_unique;

After the code above, the variables years and years_unique are assigned as follows:

years:
1632.0000        2012.0000
1709.0000        1812.0000
1709.0000        1989.0000
1830.0000        1875.0000
1912.0000        1912.0000
1924.0000        1960.0000

years_unique:
1632.0000
1709.0000
1812.0000
1830.0000
1875.0000
1912.0000
1924.0000
1960.0000
1989.0000
2012.0000

Character data

// Create column character vector, by using
// numeric concatenation operator
levels = "high" | "medium" | "medium" | "low" |
         "high" | "medium" | "medium";

// Set flag to indicate data is character data
flag = 0;

// Sort 'levels' alphabetically and
// remove any duplicate elements
levels_unique = unique(levels, flag);


// Note the $ used before the variable which
// tells GAUSS to print as characters
print $levels_unique;

The code above will produce the following output:

  high
   low
medium

You can reorder these levels with an indexing operation, for example:

levels = levels_unique[2 3 1];
print $levels;

will produce the following output:

   low
medium
  high

String array vector

// Create column string array
string levels = { "high", "medium", "medium", "low",
                  "high", "medium", "medium"};

// Sort 'levels' alphabetically and
// remove any duplicate elements
levels_unique = unique(levels);

print levels_unique;

The code above will produce the following output:

  high
   low
medium

String array matrix

// Create 3x2 string array

string levels = { "apple"      "watermelon",
                  "banana"     "banana",
                  "watermelon" "apple" };

// Sort 'levels' alphabetically and
// remove any duplicate elements
levels_unique = unique(levels);

print "levels: " levels;
print;
print "levels_unique:" levels_unique;

The code above will produce the following output:

levels:
apple                       watermelon
banana                      banana
watermelon                  apple

levels_unique:
apple
banana
watermelon

See also

Functions sortc(), uniquesa(), uniqindx()