BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
VX_Xc
Calcite | Level 5

Say I have a dataset below;

country1 country2 transactions

Korea     USA       100

USA       Korea     100

I would like to make a new variable with one paired value and sum transactions together, that is I want

countrypair   Total_trans

Korea-USA   200

So that Korea USA pair is the same as USA Korea pair. 

I have 40 or so countries, and have to pair them like the example above.

Is there anyway to do this other than having to specify each country?

Thanks for your help

1 ACCEPTED SOLUTION

Accepted Solutions
art297
Opal | Level 21

data have (keep=country transactions);

  input country1 $ country2 $ transactions;

  array cty(*) coun:;

  call sortc(of cty(*));

  country=catx('-',of cty(*));

  cards;

Korea     USA       100

USA       Korea     100

;

View solution in original post

4 REPLIES 4
art297
Opal | Level 21

data have (keep=country transactions);

  input country1 $ country2 $ transactions;

  array cty(*) coun:;

  call sortc(of cty(*));

  country=catx('-',of cty(*));

  cards;

Korea     USA       100

USA       Korea     100

;

Ksharp
Super User

Arthur,

Very good.

Ksharp

Linlin
Lapis Lazuli | Level 10

data have (keep=country transactions);

  input country1 $ country2 $ transactions;

  array cty(*) coun:;

  call sortc(of cty(*));

  country=upcase(catx('-',of cty(*)));

  cards;

Korea     USA       100

USA       Korea     100

China     Canada    200

Canada    China     300

;

proc sql;

  create table want as

    select country,sum(transactions) as total

             from have

               group by country;

quit;

proc print;run;

                                   Obs      country       total

                                     1     CANADA-CHINA     500

                                     2     KOREA-USA           200

PGStats
Opal | Level 21

data have;
input country1 $ country2 $ transactions;
datalines;
Korea     USA       100
USA       Korea     100
;

proc sql;
create table want as
select case when country1<country2 then catx("-",country1,country2) else catx("-",country2,country1) end as countryPair,
sum(transactions) as trade
from have
group by calculated countryPair;

proc print; run;

PG

PG

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 4 replies
  • 1046 views
  • 10 likes
  • 5 in conversation