cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
Hams
Level I

Removing first 4 Characters from a column along with a special character

Hello,

 

I have a column that is a sample description and there is always a ~numbers before the description that I would like to remove from all rows. Only one row has the "~" in it. For Example.

 

Sample:

126: Description AB

291: Description XYZ

~619: Description

 

Is there a JSL script that would remove the "~", first 3-digit numbers, and the ": " (including the space) from all rows within the Sample column? The data I'm looking at always has a3 digit numbers at the front along with the : and space. The problem is removing the ~ from one of the rows.

 

Appreciate the help

 

Josh

2 ACCEPTED SOLUTIONS

Accepted Solutions

Re: Removing first 4 Characters from a column along with a special character

Here's one way, essentially trimming the leading space from the last "word," using ":" as a delimiter. There are other ways, including Regex.

/*JMP STATISTICAL DISCOVERY LLC (“JMP”) PERMITS THE USE OF THIS COMPUTER SOFTWARE CODE (“CODE”) ON AN AS-IS BASIS AND AUTHORIZES YOU TO USE THE CODE SUBJECT TO THE TERMS LISTED HEREIN.  BY USING THE CODE, YOU AGREE TO THESE TERMS.  YOUR USE OF THE CODE IS AT YOUR OWN RISK.  JMP MAKES NO REPRESENTATION OR WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRIGEMENT, AND TITLE, WITH RESPECT TO THE CODE.
You may use the Code solely as part of a software product you currently have licensed from JMP, JMP’s parent company SAS Institute Inc. (“SAS”), or one of JMP’s or SAS’s subsidiaries or authorized agents (the “Software”), and not for any other purpose.  The Code is designed to add functionality to the Software but has not necessarily been tested.  Accordingly, JMP makes no representation or warranty that the Code will operate error-free.  JMP is under no obligation to maintain, support, or continue to distribute the Code.
Neither JMP nor its licensors shall be liable to you or any third-party for any general, special, direct, indirect, consequential, incidental, or other damages whatsoever arising out of or related to your use or inability to use the Code, even if JMP has been advised of the possibility of such damages.  Except as otherwise provided above, the Code is governed by the same agreement that governs the Software.  If you do not have an existing agreement with JMP or SAS governing the Software, you may not use the Code.
JMP and all other JMP Statistical Discovery LLC product or service names are registered trademarks or trademarks of JMP Statistical Discovery LLC in the USA and other countries.  ® indicates USA registration.  Other brand and product names are registered trademarks or trademarks of their respective companies.
*/
Names Default To Here (1);
//make data table
dt = New Table( "Untitled",
	Add Rows( 3 ),
	New Column( "Sample",
		Character,
		"Nominal",
		Set Values(
			{"126: Description AB", "291: Description XYZ", "~619: Description"}
		)
	)
);
//remove unwanted characters
for each row (dt,
	:Sample = trim (word (-1, :Sample, ":"))
);

View solution in original post

jthi
Super User

Re: Removing first 4 Characters from a column along with a special character

There are many different ways of doing this, below is one option using regex

Regex("126: Description AB", "~?\d{3}: (.+)$", "\1");
Regex("291: Description XYZ", "~?\d{3}: (.+)$", "\1");
Regex("~619: Description", "~?\d{3}: (.+)$", "\1");

https://regex101.com/r/nMilGt/1 explains the regex a bit

jthi_0-1683709841329.png

 

-Jarmo

View solution in original post

3 REPLIES 3

Re: Removing first 4 Characters from a column along with a special character

Here's one way, essentially trimming the leading space from the last "word," using ":" as a delimiter. There are other ways, including Regex.

/*JMP STATISTICAL DISCOVERY LLC (“JMP”) PERMITS THE USE OF THIS COMPUTER SOFTWARE CODE (“CODE”) ON AN AS-IS BASIS AND AUTHORIZES YOU TO USE THE CODE SUBJECT TO THE TERMS LISTED HEREIN.  BY USING THE CODE, YOU AGREE TO THESE TERMS.  YOUR USE OF THE CODE IS AT YOUR OWN RISK.  JMP MAKES NO REPRESENTATION OR WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRIGEMENT, AND TITLE, WITH RESPECT TO THE CODE.
You may use the Code solely as part of a software product you currently have licensed from JMP, JMP’s parent company SAS Institute Inc. (“SAS”), or one of JMP’s or SAS’s subsidiaries or authorized agents (the “Software”), and not for any other purpose.  The Code is designed to add functionality to the Software but has not necessarily been tested.  Accordingly, JMP makes no representation or warranty that the Code will operate error-free.  JMP is under no obligation to maintain, support, or continue to distribute the Code.
Neither JMP nor its licensors shall be liable to you or any third-party for any general, special, direct, indirect, consequential, incidental, or other damages whatsoever arising out of or related to your use or inability to use the Code, even if JMP has been advised of the possibility of such damages.  Except as otherwise provided above, the Code is governed by the same agreement that governs the Software.  If you do not have an existing agreement with JMP or SAS governing the Software, you may not use the Code.
JMP and all other JMP Statistical Discovery LLC product or service names are registered trademarks or trademarks of JMP Statistical Discovery LLC in the USA and other countries.  ® indicates USA registration.  Other brand and product names are registered trademarks or trademarks of their respective companies.
*/
Names Default To Here (1);
//make data table
dt = New Table( "Untitled",
	Add Rows( 3 ),
	New Column( "Sample",
		Character,
		"Nominal",
		Set Values(
			{"126: Description AB", "291: Description XYZ", "~619: Description"}
		)
	)
);
//remove unwanted characters
for each row (dt,
	:Sample = trim (word (-1, :Sample, ":"))
);
Victor_G
Super User

Re: Removing first 4 Characters from a column along with a special character

Hi @Hams,

 

Since the part you would like to keep is always separated from the rest of the string by a blank space, you can using a recode formula like below to keep all "words" except the first one (which is a mix of characters and numbers but not separated by blank space). You can simply change "Column 1" column name by the column name in which you have the sample description.

 

Recode(
	:Column 1,
	{Word(
		[2 -1],
		_rcNow,
		Get Whitespace Characters() ||
		Get Punctuation Characters( Exclude Chars( "'-" ) ),
		Unmatched( _rcNow )
	)}
)

Hope this other option will help you,

Victor GUILLER
Scientific Expertise Engineer
L'Oréal - Data & Analytics
jthi
Super User

Re: Removing first 4 Characters from a column along with a special character

There are many different ways of doing this, below is one option using regex

Regex("126: Description AB", "~?\d{3}: (.+)$", "\1");
Regex("291: Description XYZ", "~?\d{3}: (.+)$", "\1");
Regex("~619: Description", "~?\d{3}: (.+)$", "\1");

https://regex101.com/r/nMilGt/1 explains the regex a bit

jthi_0-1683709841329.png

 

-Jarmo