- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi experts,
I'm using tranwrd in sas enterprice guide and works fine, but when i use it in the linux environment it does not work
data ALTAS_DEF;
set ALTAS_DEF;
First_name = tranwrd(First_name, 'ñ', 'n');
run;
i just want to change a letter for other one, do you know a work around about it ? or an equivalent function ?
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
data EXAMPLE ;
%* Test string;
STR1 = 'aaâäÊÉŒñbb';
%* Single letter replacements;
STR2 = ktranslate( STR1
, 'AAAAAACEEEEIIIIDNOOOOOOUUUUYaaaaaaceeeeiiiidnoooooouuuuyy'
, 'ÀÁÂÃÅÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÕØÖÙÚÛÜÝàáâãåäçèéêëìíîïðñòóôõøöùúûüýÿ' );
%* Double letter replacements;
STR3 = tranwrd ( STR2, 'Æ', 'AE' );
STR3 = tranwrd ( STR3, 'æ', 'ae' );
STR3 = tranwrd ( STR3, 'Œ', 'OE' );
STR3 = tranwrd ( STR3, 'œ', 'oe' );
STR3 = tranwrd ( STR3, 'ß', 'ss' );
run;
SAS does not support the regular expression syntax needed to do this in one go.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
If you only need to change a character ,NOT a word/string, try KTRANSLATE().
data s;
set sashelp.class;
First_name = ktranslate(name, 'n','ñ');
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
data EXAMPLE ;
%* Test string;
STR1 = 'aaâäÊÉŒñbb';
%* Single letter replacements;
STR2 = ktranslate( STR1
, 'AAAAAACEEEEIIIIDNOOOOOOUUUUYaaaaaaceeeeiiiidnoooooouuuuyy'
, 'ÀÁÂÃÅÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÕØÖÙÚÛÜÝàáâãåäçèéêëìíîïðñòóôõøöùúûüýÿ' );
%* Double letter replacements;
STR3 = tranwrd ( STR2, 'Æ', 'AE' );
STR3 = tranwrd ( STR3, 'æ', 'ae' );
STR3 = tranwrd ( STR3, 'Œ', 'OE' );
STR3 = tranwrd ( STR3, 'œ', 'oe' );
STR3 = tranwrd ( STR3, 'ß', 'ss' );
run;
SAS does not support the regular expression syntax needed to do this in one go.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I'm using tranwrd in sas enterprice guide and works fine, but when i use it in the linux environment it does not work
This makes no sense. The SAS language is the very same on all platforms. I suspect you have another issue, like encoding.
Run this to verify:
%put &=sysencoding;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
It is usually not a good idea to insert non 7-bit ASCII character constants into your program. Then the meaning of the code will change depending on the character encoding that is being used.
The Spanish character "enye" will be stored as different sets of bytes depending on the encoding you are using. And for some single byte encodings it might not even exist.
To check what encoding SAS is using for your SAS session check the value of the ENCODING system option.