Hi.
I need to create a multiple array (81,81).
I've 3 columns in my data. 1st and 2nd column values ranges from 1 to 81 (these are codes for Provinces) and the 3rd column shows the distance between these provinces. The data structure is like:
A B C
1 2 200
1 3 500
. . .
1 81 300
2 1 100
2 3 250
. . .
81 80 1000;
I need to create an array/table/matrix which is 81 by 81 and shows the distance (3rd column value) between these provinces (1st and 2nd columns values).
Thanks in advance.
Hi,
Try transpose:
data have;
infile datalines;
input a b c;
datalines;
1 2 200
1 3 30
1 5 23
2 1 27
2 4 8
2 5 90
;
run;
proc sort data=have;
by a b c;
run;
proc transpose data=have out=want (drop=_name_) prefix=B;
by a;
var c;
id b;
idlabel b;
run;
The above will create Bx variables for each unique occurrence of a value in B.
Hi,
Try transpose:
data have;
infile datalines;
input a b c;
datalines;
1 2 200
1 3 30
1 5 23
2 1 27
2 4 8
2 5 90
;
run;
proc sort data=have;
by a b c;
run;
proc transpose data=have out=want (drop=_name_) prefix=B;
by a;
var c;
id b;
idlabel b;
run;
The above will create Bx variables for each unique occurrence of a value in B.
Shouldn't the distance between a=1 and b=2 be the same as a=2 and b=1?
Hi. Thanks for your reply.
Yes it is, I just mentioned randomly .
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.