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

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

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
  • 1032 views
  • 10 likes
  • 5 in conversation