Hi,
I am trying to merge with index variables but when merge finished the output table doesn't have the index table.
here my A table has index variables . I want see the same result in TEST table also(with index variables).
data test; merge a(in=a) b(in=b); by id; if a=b then do; if name ne ' ' then name='XXXX'; end; if a then output; run;
As I already said, use proc datasets to create an index table for a newly created dataset. Index tables are not automatically created.
If you want to have an index for a newly created dataset, use proc datasets to add it to the dataset. Indexes are not automatically created.
Post test data in the form of a datastep and what the output should look like. At a guess:
if a=b then do;
Does not do what you think it does, you may mean, if a and b, i.e. if record is in both datasets.
I can't really tell you anything else without seeing some data.
@RW9 wrote:
Post test data in the form of a datastep and what the output should look like. At a guess:
if a=b then do;Does not do what you think it does, you may mean, if a and b, i.e. if record is in both datasets.
I can't really tell you anything else without seeing some data.
The funny thing is that this works, as a = b = 0 can never happen. Although I prefer to use if a and b;
yes It is working , but I will change to if a and b. here Id is the index varable
Running this:
data test;
merge sascomm.base(in=a) sascomm.a(in=b);
by id;
if a=b then do;
if name ne ' ' then name='XXXX';
end;
if a then output;
run;
proc print data=sascomm.base noobs;
proc print data=sascomm.a noobs;
proc print data=test noobs;
run;
after uploading your datasets, I see no problems at all:
id name 1 qq 2 aa 3 ss 4 ss 5 dd 6 dff 7 vff 8 gggg 9 ggggg 10 rrr 11 sss 12 ssss 13 dddd 14 sssss id 2 5 6 7 10 id name 1 qq 2 XXXX 3 ss 4 ss 5 XXXX 6 XXXX 7 XXXX 8 gggg 9 ggggg 10 XXXX 11 sss 12 ssss 13 dddd 14 sssss
data sascomm.base(index=(id)); set sascomm.base; run; data test; merge sascomm.base(in=a) sascomm.a(in=b); by id; if a=b then do; if name ne ' ' then name='XXXX'; end; if a then output; run;
when we perform this. test table is not creating the index table . I want to get the index table also.
As I already said, use proc datasets to create an index table for a newly created dataset. Index tables are not automatically created.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.