Counting unique elements in a text list

The following formula will count the number of elements that are the same in a text list.
List1 :=  @Explode ( "Red,Blue,Red,
Green,Red,Blue"; "," ) ;
List2 := List1 + "@" ;
List3 := @Unique ( List1 ) ;
List4 := @ReplaceSubstring 
( List3; List1; List2 ) ;
List5 := @ReplaceSubstring 
( List4; List3; "" ) ;
@Length ( List5 )
In this example it returns 3; 2; 1. That is, there are 3 occurrences of red, 2 blue and 1 green.

How it works

List1 can be any text list field or variable.

List2 is all the elements of List1 with @ appended to the end. You can use other characters. So, in this example, List2 looks like:

 Red@; Blue@; Red@; Green@; Red@; Blue@
List3 is a text list of the unique values within List1:
 Red; Blue; Green
List4 replaces the values in List3 with those in List2, which results in an @ sign for each occurrence:
 Red@@@; Blue@@; Green@
List5 removes the List3 values from List4 and returns:
 @@@; @@; @
The last command now returns the length of each item in the list:
 3; 2; 1
With a bit more list manipulation you can return:

Red 3
Blue 2
Green 1

List1 :=  @Explode ( "Red,Blue,Red,
Green,Red,Blue"; "," ) ;
List2 := List1 + "@" ;
List3 := @Unique ( List1 ) ;
List4 := @ReplaceSubstring ( List3;
 List1; List2 ) ;
List5 := @ReplaceSubstring ( List4; 
List3; "" ) ;
@Length ( List5 )

Do you have comments on this tip? Let us know.

This was first published in November 2003

There are Comments. Add yours.

TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.