It’s World Statistics Day! To honor the theme of the day, the JMP User Community is having conversations about the importance of trust in statistics and data. And we want to hear from you! Tell us the steps you take to ensure that your data is trustworthy.
Choose Language Hide Translation Bar
Highlighted
Level II

Extracting a particular string from a longer one

 Source Temperature MZ_ES20-ATF786_D03-R_8x8-5hz_NoCG_0klux-black3--5degc__20181105_203705 -5 MZ_ES20-ATF786_D03-R_8x8-5hz_NoCG_0klux-grey17--30degc__20181105_194659 -30 MZ_ES20-ATF786_D03-R_8x8-5hz_NoCG_0klux-white64-70degc__20181105_183920 70

Hi,

I am trying to extract the temperature from the "Source" column in the JMP table above using JSL

In the Temperature column I have written the results that I would like. My problem is that the delimiter between the colour

(black3,grey17 and white64) and the temperature is a dash "-" but sometimes the temperature is negative which is also "-"

I have tried a number of things with the Word function but so far to no avail. Any help with this would be apprecated.

Thanks and regards,

David

2 ACCEPTED SOLUTIONS

Accepted Solutions
Highlighted
Staff

Re: Extracting a particular string from a longer one

This problem is easily solved by the Regex() string function. Try this:

``Num( Regex( :Source, "-(-?\d\d?\d?)degc", "\1" ) )``
Learn it once, use it forever!
Highlighted
Super User

Re: Extracting a particular string from a longer one

Here is a formula that I believe will do the trick

``````degCPosition = Contains( :Source, "degc__" ) - 1;
i = degCPosition;
While( Substr( :Source, i, 1 ) != "-", i-- );
If( Substr( :Source, i - 1, 1 ) == "-",
result = Num( Substr( :Source, i, (degCPosition - i) + 1 ) ),
result = Num( Substr( :Source, i + 1, degCPosition - i ) )
);
result;``````

Jim
4 REPLIES 4
Highlighted
Staff

Re: Extracting a particular string from a longer one

This problem is easily solved by the Regex() string function. Try this:

``Num( Regex( :Source, "-(-?\d\d?\d?)degc", "\1" ) )``
Learn it once, use it forever!
Highlighted
Level II

Re: Extracting a particular string from a longer one

Hi,
Thank you , that works and very succinct !

Kind Regards,
David.
Highlighted
Super User

Re: Extracting a particular string from a longer one

Here is a formula that I believe will do the trick

``````degCPosition = Contains( :Source, "degc__" ) - 1;
i = degCPosition;
While( Substr( :Source, i, 1 ) != "-", i-- );
If( Substr( :Source, i - 1, 1 ) == "-",
result = Num( Substr( :Source, i, (degCPosition - i) + 1 ) ),
result = Num( Substr( :Source, i + 1, degCPosition - i ) )
);
result;``````

Jim
Highlighted
Level II

Re: Extracting a particular string from a longer one

Thank you ,very helpful
Kind Regards,
David.

Article Labels

There are no labels assigned to this post.