Hi all,
I'm using the compare function in a data step to compare the values in two columns. The length of the character string is 30 characters and the compare function says there is a difference in the 31st character. I've trimmed the two variables and don't know why there is a difference. The two cells say the same thing. I've copied them over to excel and set them equal to one another and they check out. All the other observations are matching as well. Any help will be appreciated!
Thanks, Hima but I was using the compare function and not the PROC. See below.
result= compare(NamesFromFile, MasterNames)
You may have some invisible-unprinted character in your variables, such as 'tab'. The best way to tell the difference is to see what machine sees: the hex value, you can try to fiddle with some options, but that would depend on your luck.
data test;
input (v1 v2) ($char4.);
put v1=hex16. / v2=hex16.;
rc1=compare(v1,v2); /*v1 is tailed by a 'blank' while v2 has a 'tab'*/
rc2=compare(trim(v1),trim(v2));/*trim will only take off the blank, so it wouldn't work*/
rc3=compare(trim(v1),trim(v2),':');/*with the modifier, it only compares the shortest char, which is 3, so now it works*/
cards;
aaa aaa
;
Regards,
Haikuo
You're right. The modifier worked! Thanks!
if you only want to compare the PRINTABLE part of your variable, use compress();
results=compare(compress(v1,,'kw'),compress(v2,,'kw'));
Haikuo
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.