Jump to content

Count duplicates by word in array


Recommended Posts

Hello,

 

having issue to count duplicates in array, tried _ArrayFindAll but it doesn't find by word? _ArrayUnique only shows the words without value how many duplicates.

 

for example I have 

; Extracted array from excel which looks like something like this:

#include <Array.au3>

Local $aArray[0]

$aArray = [John, Martin, Potter, John, Marta, Lola, John]

How I can count John how many time he was duplicated, I need in return only value which is 3?

 

Tried

$name = "John"

$findDup = _ArrayFindAll($aArray, $name, 0, 0, 0)

MsgBox(0, "", $findDup)

but doesnt work :{

Link to comment
Share on other sites

  • Moderators

diff,

If you declare the array correctly and read the Help file to see that _ArrayFindAll returns an array which does not display in a MsgBox, you get this:

#include <Array.au3>

Local $aArray = ["John", "Martin", "Potter", "John", "Marta", "Lola", "John"]

$sName = "John"

$aFindDup = _ArrayFindAll($aArray, $sName)

_ArrayDisplay($aFindDup, "", Default, 8)

MsgBox(0, "", UBound($aFindDup))

which works fine for me.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Here an example also with "partial search" :

#include <Array.au3>
Local $sSearch, $aResult
Local $aArray = ["Peter John Doe", "Martin", "Potter", "John", "Marta", "Lola", "John"]
_ArrayDisplay($aArray, "SearchArray") ; *** just to display the array

$sSearch = "John"

; Parameter $iCompare = 1 ==> executes a partial search
; ---------------------------------------------------------------V-----------
$aResult = _ArrayFindAll($aArray, $sSearch, Default, Default, 0, 1, 0, False)
_ArrayDisplay($aResult, "$iCompare = 1") ; *** just to display the array
MsgBox(BitOR(4096,96), "Result 1 :", $sSearch & "  was found " & UBound($aResult) & " time(s)" & @CRLF)

; Parameter $iCompare = 2 ==> comparison match same type and same value
; ---------------------------------------------------------------V-----------
$aResult = _ArrayFindAll($aArray, $sSearch, Default, Default, 0, 2, 0, False)
_ArrayDisplay($aResult, "$iCompare = 2") ; *** just to display the array
MsgBox(BitOR(4096,96), "Result 2 :", $sSearch & "  was found " & UBound($aResult) & " time(s)" & @CRLF)

 

Musashi-C64.png

"In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move."

Link to comment
Share on other sites

1 hour ago, Melba23 said:

diff,

If you declare the array correctly and read the Help file to see that _ArrayFindAll returns an array which does not display in a MsgBox, you get this:

#include <Array.au3>

Local $aArray = ["John", "Martin", "Potter", "John", "Marta", "Lola", "John"]

$sName = "John"

$aFindDup = _ArrayFindAll($aArray, $sName)

_ArrayDisplay($aFindDup, "", Default, 8)

MsgBox(0, "", UBound($aFindDup))

which works fine for me.

M23

I don't know why but in my situation only works with partial search included in _ArrayFindAll with your code.

 

Thank you guys, modified from both codes and got it working by adding partial search.

 

1 hour ago, Musashi said:

Here an example also with "partial search" :

#include <Array.au3>
Local $sSearch, $aResult
Local $aArray = ["Peter John Doe", "Martin", "Potter", "John", "Marta", "Lola", "John"]
_ArrayDisplay($aArray, "SearchArray") ; *** just to display the array

$sSearch = "John"

; Parameter $iCompare = 1 ==> executes a partial search
; ---------------------------------------------------------------V-----------
$aResult = _ArrayFindAll($aArray, $sSearch, Default, Default, 0, 1, 0, False)
_ArrayDisplay($aResult, "$iCompare = 1") ; *** just to display the array
MsgBox(BitOR(4096,96), "Result 1 :", $sSearch & "  was found " & UBound($aResult) & " time(s)" & @CRLF)

; Parameter $iCompare = 2 ==> comparison match same type and same value
; ---------------------------------------------------------------V-----------
$aResult = _ArrayFindAll($aArray, $sSearch, Default, Default, 0, 2, 0, False)
_ArrayDisplay($aResult, "$iCompare = 2") ; *** just to display the array
MsgBox(BitOR(4096,96), "Result 2 :", $sSearch & "  was found " & UBound($aResult) & " time(s)" & @CRLF)

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...