BookmarkSubscribeRSS Feed
namrata
Fluorite | Level 6

Hi

I have a panel dataset with fiscal year end dates. The second dataset is a cross-sectional one with bond issue dates.

Now, I would like to merge the first with the second based on this criterion:

The first would be matched with the second based  on id(cnum and new_cusip) of course. However, the date matching criterion is that the fiscal year end date matches with the first bond issue date that occurs after the fiscal year end date.

I would appreciate any idea. I have attached two sample datasets.

Regards

Namrata

2 REPLIES 2
namrata
Fluorite | Level 6

Any ideas anyone? Smiley Happy

PGStats
Opal | Level 21

Sure, try this:

proc sql;

create table set3 as

select

     a.*,

     b.proceeds,

     b.issue_date

from

    sasforum.set1 as a left join

    (   select

            intnx("YEAR", issue_date, -1, "END") as DATADATE,

            issue_date,

            proceeds,

            newcusip

        from sasforum.set2

        group by newcusip, calculated DATADATE

        having newcusip = min(newcusip)  ) as b

    on a.cnum=b.newcusip and a.DATADATE=b.DATADATE;

quit;

Replace left join with inner join if you want only the matching cases.

PG

PG

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!

Register now

What is Bayesian Analysis?

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1504 views
  • 0 likes
  • 2 in conversation