counting duplicate values | | |
Hello every one,
this is about an array of string and may be have done several time
before but i need it and wasnt able to find it so here is the problem
i have an array of strings with contains words and i want a distinct
list of array with the count of each number repeat i.e how many time
it exist in the array and the final result should be sorted according
to the number of repeat from hight to low .
for example
thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
the result should be
32a
29s
5a
7s
20
8
i have this code which take out all the duplicate values and print the
distinct values
function RemCDups(byVal thearray)
Dim element,element2,k,i,j
dim newArray()
redim newArray(0)
for i = 0 to ubound(thearray)
element = thearray(i)
element2 = "false"
for j = i + 1 to Ubound(thearray)
if theArray(j) = element then
element2 = "true"
end if
next
if element2 = "false" then
redim preserve newArray(Ubound(newArray)+1)
newArray(k) = theArray(i)
k = k + 1
end if
next
RemCDups = newArray
end function
but i want to modify it to do the sort according to the count of each
element from high to low
thanks.
regards
NIQ | | | | re: counting duplicate values
So you have succeded finding the values and putting 'em into an array and
now you want to order the array?
for j = 1 to ubound(array)
for i = 0 to ubound(array)
if not i=ubound(array)
if array(i)<array(i+1) then
temp=array(i)
array(i)=array(i+1)
array(i+1)=temp
end if
end if
next
next
I hope i've written the algorithem currect... this is the simplest way to
order an array.
you can also use JS.
Roy.
"NiQ" <niqkhan@yahoo.com> wrote in message
news:cd5907f3.0402060225.7fe992e8@posting.google.c om...[color=blue]
> Hello every one,
> this is about an array of string and may be have done several time
> before but i need it and wasnt able to find it so here is the problem
>
> i have an array of strings with contains words and i want a distinct
> list of array with the count of each number repeat i.e how many time
> it exist in the array and the final result should be sorted according
> to the number of repeat from hight to low .
> for example
>
> thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
>
> the result should be
> 32a
> 29s
> 5a
> 7s
> 20
> 8
>
>
> i have this code which take out all the duplicate values and print the
> distinct values
>
> function RemCDups(byVal thearray)
>
> Dim element,element2,k,i,j
> dim newArray()
> redim newArray(0)
>
> for i = 0 to ubound(thearray)
>
> element = thearray(i)
> element2 = "false"
>
> for j = i + 1 to Ubound(thearray)
> if theArray(j) = element then
> element2 = "true"
> end if
> next
>
> if element2 = "false" then
> redim preserve newArray(Ubound(newArray)+1)
> newArray(k) = theArray(i)
> k = k + 1
> end if
> next
>
> RemCDups = newArray
> end function
>
> but i want to modify it to do the sort according to the count of each
> element from high to low
>
> thanks.
>
> regards
> NIQ[/color] | | | | re: counting duplicate values
"NiQ" wrote:
: i have an array of strings with contains words and i want a distinct
: list of array with the count of each number repeat i.e how many time
: it exist in the array and the final result should be sorted according
: to the number of repeat from hight to low .
: for example
:
: thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
: the result should be
: 32a
: 29s
: 5a
: 7s
: 20
: 8
: but i want to modify it to do the sort according to the count of each
: element from high to low
NiQ...
I took a different approach and chose to use a dictionary.
I took your string and split it to create an array of elements.
I took the elements of the array and created a dictionary but only to add
unique keys so the result was 6 keys. I then created another dictionary,
comparing with the first dictionary keys to find the duplicates and then
incremented the value of the items. After that I used a dictionary sort I
found at Microsoft and modified it so I could pass the order to return the
results.
This is my solution. There is a link on the page to view the source. http://kiddanger.com/lab/array.asp
HTH...
--
Roland Hall
/* This information is distributed in the hope that it will be useful, but
without any warranty; without even the implied warranty of merchantability
or fitness for a particular purpose. */
Technet Script Center - http://www.microsoft.com/technet/scriptcenter/
WSH 5.6 Documentation - http://msdn.microsoft.com/downloads/list/webdev.asp
MSDN Library - http://msdn.microsoft.com/library/default.asp | | | | re: counting duplicate values
thanks a lot to both of you . i will try these codes and will post
incase of any furthur help . but i really appreciate this thanks a
lot.
regards
niq
"Roland Hall" <nobody@nowhere> wrote in message news:<uDZ3Hfc7DHA.3648@TK2MSFTNGP11.phx.gbl>...[color=blue]
> "NiQ" wrote:
> : i have an array of strings with contains words and i want a distinct
> : list of array with the count of each number repeat i.e how many time
> : it exist in the array and the final result should be sorted according
> : to the number of repeat from hight to low .
> : for example
> :
> : thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
> : the result should be
> : 32a
> : 29s
> : 5a
> : 7s
> : 20
> : 8
> : but i want to modify it to do the sort according to the count of each
> : element from high to low
>
> NiQ...
>
> I took a different approach and chose to use a dictionary.
>
> I took your string and split it to create an array of elements.
>
> I took the elements of the array and created a dictionary but only to add
> unique keys so the result was 6 keys. I then created another dictionary,
> comparing with the first dictionary keys to find the duplicates and then
> incremented the value of the items. After that I used a dictionary sort I
> found at Microsoft and modified it so I could pass the order to return the
> results.
>
> This is my solution. There is a link on the page to view the source.
>
> http://kiddanger.com/lab/array.asp
>
> HTH...[/color] | | | | re: counting duplicate values
hi ronald
thanks again for your great help , i am just having a little problem
when i increase the number of one exisitence more than 10 then it
sorts it verz strangly i want to sort on the number of occourences
with the code u wrote can u try this array
thearray = "32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32a,32a,32a ,32a,32a,32a,32a,32a,32a"
the result will be something like this
2=29s
2=5a
13=32a
1=8
1=20
1=7s
when it should be
13=32a
2=29s
2=5a
1=8
1=20
1=7s
please let me know how i can fix it .
best regards
NIQ
"Roland Hall" <nobody@nowhere> wrote in message news:<uDZ3Hfc7DHA.3648@TK2MSFTNGP11.phx.gbl>...[color=blue]
> "NiQ" wrote:
> : i have an array of strings with contains words and i want a distinct
> : list of array with the count of each number repeat i.e how many time
> : it exist in the array and the final result should be sorted according
> : to the number of repeat from hight to low .
> : for example
> :
> : thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
> : the result should be
> : 32a
> : 29s
> : 5a
> : 7s
> : 20
> : 8
> : but i want to modify it to do the sort according to the count of each
> : element from high to low
>
> NiQ...
>
> I took a different approach and chose to use a dictionary.
>
> I took your string and split it to create an array of elements.
>
> I took the elements of the array and created a dictionary but only to add
> unique keys so the result was 6 keys. I then created another dictionary,
> comparing with the first dictionary keys to find the duplicates and then
> incremented the value of the items. After that I used a dictionary sort I
> found at Microsoft and modified it so I could pass the order to return the
> results.
>
> This is my solution. There is a link on the page to view the source.
>
> http://kiddanger.com/lab/array.asp
>
> HTH...[/color] | | | | re: counting duplicate values
NiQ wrote:[color=blue]
> hi ronald
> thanks again for your great help , i am just having a little problem
> when i increase the number of one exisitence more than 10 then it
> sorts it verz strangly i want to sort on the number of occourences
> with the code u wrote can u try this array
> thearray =
>[/color]
"32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32a,32a,32a ,32a,32a,32a,32a,32a,32a"[color=blue]
>
> the result will be something like this
> 2=29s
> 2=5a
> 13=32a
> 1=8
> 1=20
> 1=7s[/color]
This is the correct alpha (string) sort order.[color=blue]
>
> when it should be
> 13=32a
> 2=29s
> 2=5a
> 1=8
> 1=20
> 1=7s
>[/color]
You want a numeric sort order so you need to convert the strings to numbers
before doing the sort. This is the line that needs changing:
If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTe xtCompare) > 0 Then
Change it to
If CInt(strDict(X,intSort)) > CInt(strDict(Y,intSort)) Then
HTH,
Bob Barrows
--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM" | | | | re: counting duplicate values
"Bob Barrows" wrote:
: NiQ wrote:
: > hi ronald
: > thanks again for your great help , i am just having a little problem
: > when i increase the number of one exisitence more than 10 then it
: > sorts it verz strangly i want to sort on the number of occourences
: > with the code u wrote can u try this array
: > thearray =
: >
:
"32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32a,32a,32a ,32a,32a,32a,32a,32a,32a"
: >
: > the result will be something like this
: > 2=29s
: > 2=5a
: > 13=32a
: > 1=8
: > 1=20
: > 1=7s
:
: This is the correct alpha (string) sort order.
: >
: > when it should be
: > 13=32a
: > 2=29s
: > 2=5a
: > 1=8
: > 1=20
: > 1=7s
: >
:
:
: You want a numeric sort order so you need to convert the strings to
numbers
: before doing the sort. This is the line that needs changing:
:
: If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTe xtCompare) > 0 Then
:
: Change it to
: If CInt(strDict(X,intSort)) > CInt(strDict(Y,intSort)) Then
I changed the whole function so you can pass text or numeric so the sort
routine could be reusable in the future. http://kiddanger.com/lab/array.asp
Thanks for your help Bob. (O:=
--
Roland Hall
/* This information is distributed in the hope that it will be useful, but
without any warranty; without even the implied warranty of merchantability
or fitness for a particular purpose. */
Technet Script Center - http://www.microsoft.com/technet/scriptcenter/
WSH 5.6 Documentation - http://msdn.microsoft.com/downloads/list/webdev.asp
MSDN Library - http://msdn.microsoft.com/library/default.asp | | | | re: counting duplicate values
Roland Hall wrote:[color=blue]
>
> I changed the whole function so you can pass text or numeric so the
> sort routine could be reusable in the future.
> http://kiddanger.com/lab/array.asp
>
> Thanks for your help Bob. (O:=[/color]
:-)
What if a date comparison is needed ... ? Or Doubles?
Bob Barrows
--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup. | | | | re: counting duplicate values
hi Roland,
there is something wrong . it take the count sort as character i.e if
the
occourance is 102 then it will come with all 1's then all 2's
thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a,32a,32a,32a,32a,32a,32a,32a,32a,32a"
try with this and you will see what i mean .
i tried a little but can get it work . may be you can help
thanks a lot
regards
niq niqkhan@yahoo.com (NiQ) wrote in message news:<cd5907f3.0402090116.39e77495@posting.google. com>...[color=blue]
> thanks a lot to both of you . i will try these codes and will post
> incase of any furthur help . but i really appreciate this thanks a
> lot.
>
> regards
> niq
>
> "Roland Hall" <nobody@nowhere> wrote in message news:<uDZ3Hfc7DHA.3648@TK2MSFTNGP11.phx.gbl>...[color=green]
> > "NiQ" wrote:
> > : i have an array of strings with contains words and i want a distinct
> > : list of array with the count of each number repeat i.e how many time
> > : it exist in the array and the final result should be sorted according
> > : to the number of repeat from hight to low .
> > : for example
> > :
> > : thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a"
> > : the result should be
> > : 32a
> > : 29s
> > : 5a
> > : 7s
> > : 20
> > : 8
> > : but i want to modify it to do the sort according to the count of each
> > : element from high to low
> >
> > NiQ...
> >
> > I took a different approach and chose to use a dictionary.
> >
> > I took your string and split it to create an array of elements.
> >
> > I took the elements of the array and created a dictionary but only to add
> > unique keys so the result was 6 keys. I then created another dictionary,
> > comparing with the first dictionary keys to find the duplicates and then
> > incremented the value of the items. After that I used a dictionary sort I
> > found at Microsoft and modified it so I could pass the order to return the
> > results.
> >
> > This is my solution. There is a link on the page to view the source.
> >
> > http://kiddanger.com/lab/array.asp
> >
> > HTH...[/color][/color] | | | | re: counting duplicate values
"NiQ" wrote:
: hi Roland,
: there is something wrong . it take the count sort as character i.e if
: the
:
: occourance is 102 then it will come with all 1's then all 2's
:
:
thearray="32a,7s,5a,29s,20,29s,32a,8,5a,32a,32a,32 a,32a,32a,32a,32a,32a,32a,
32a,32a,32a"
:
: try with this and you will see what i mean .
:
: i tried a little but can get it work . may be you can help
I did and it works fine. Perhaps you missed my other post following Bob's
first post on this thread. The example is running with the above value.
--
Roland Hall
/* This information is distributed in the hope that it will be useful, but
without any warranty; without even the implied warranty of merchantability
or fitness for a particular purpose. */
Technet Script Center - http://www.microsoft.com/technet/scriptcenter/
WSH 5.6 Documentation - http://msdn.microsoft.com/downloads/list/webdev.asp
MSDN Library - http://msdn.microsoft.com/library/default.asp |  | Similar ASP / Active Server Pages bytes | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 226,471 network members.
|