cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Browse apps to extend the software in the new JMP Marketplace
Choose Language Hide Translation Bar
agaddis
Level I

Count number of occurrences of specific words in a string

Hello I'm looking to create a new column in my dataset that counts the number of times a specfic word appears in a string. The words are separated by "*" in each row. 

Example table:

Animal List

1  dog*dog*cat*bird*dog

2  dog*dog*cat*bird*dog*dog

 

 

Output should be

Animal List                                        Dog Count

1  dog*dog*cat*bird*dog                         3

2  dog*dog*cat*bird*dog*dog                  4

 

 

Can provide additional information if needed.

1 ACCEPTED SOLUTION

Accepted Solutions
txnelson
Super User

Re: Count number of occurrences of specific words in a string

Here is the formula for counting the number of times "dog" appears in a given column

N Rows( Loc( Words( :Column 1, "*" ), "dog" ) )

agaddis.GIF

Jim

View solution in original post

17 REPLIES 17
txnelson
Super User

Re: Count number of occurrences of specific words in a string

Here is the formula for counting the number of times "dog" appears in a given column

N Rows( Loc( Words( :Column 1, "*" ), "dog" ) )

agaddis.GIF

Jim
agaddis
Level I

Re: Count number of occurrences of specific words in a string

Thank you!!
agaddis
Level I

Re: Count number of occurrences of specific words in a string

 How would this work for wildcard words? For example if dog had dog1 and another said dog2? I still would want it to count all of the dog words. 

txnelson
Super User

Re: Count number of occurrences of specific words in a string

The following formula will find all items with the string "dog" found in it

wordList=words(st,"*");
count=0;for(i=1,i<=n items(wordList),i++,count=sum(count,contains(wordList[i],"dog")));
count;
Jim
l_yampolsky
Level III

Re: Count number of occurrences of specific words in a string

Does the function Loc() exist only in JMP Pro?

Is there a way to count words or specific symbols in a string in regular JMP?

 


@txnelson wrote:

Here is the formula for counting the number of times "dog" appears in a given column

N Rows( Loc( Words( :Column 1, "*" ), "dog" ) )

agaddis.GIF


 

txnelson
Super User

Re: Count number of occurrences of specific words in a string

The documentation for JMP 13 does not indicate the LOC() function is only a JMP Pro function.  I would validate that by running the LOC() function example in the Scripting Index

     Help==>Scripting Index

Names Default To Here( 1 );
Show( Loc( [1 0 1 0 1 0] ) );
Show( Loc( {"A", 2, 3, 2, 5, 2, 4, [1 5]}, 2 ) );
Show(
	Loc( {"A", 2, 3, 2, 5, 2, 4, [1 5]}, [1 5] )
);
Jim
Jeff_Perkinson
Community Manager Community Manager

Re: Count number of occurrences of specific words in a string

I can confirm that the Loc() function is not specific to JMP Pro. It is available in JMP.

-Jeff
KarenHuang
Level I

Re: Count number of occurrences of specific words in a string

Hi

What if there is no delimiter, e.g. I'd like to count how many "1" in a binary string 111001010?

How can I get the results like this?

Capture.JPG

 

Thanks

Craige_Hales
Super User

Re: Count number of occurrences of specific words in a string

Many ways to do this. Here's one.

ASCIIcode = blobtomatrix(chartoblob("1"),"int",1,"big")[1];  // 49
intermediate=blobtomatrix(chartoblob("0101111001010"),"int",1,"big")==ASCIIcode;
// intermediate=[0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0]
sum(intermediate);

Line 1 is just a way to get the ASCII code for the ASCII character "1", returned in a matrix of 1 element.

Line 2 is similar, but gets a bigger array and compares it to the desired code, resulting in the value in the Line 3 comment.

Line 4 just adds up the elements.

 

Craige