将3变量转换为矩阵形式以在SAS中创建热图

时间:2015-01-08 03:39:25

标签: matrix sas heatmap sas-iml

我试图将3个vairables转换为矩阵,如果您有以下内容,请参阅示例:

(CHAR)(char)(num)

Var1 Var2 Var3

A B 1

C D 2

E F 3

A D 4

A F 5

C B 6

C F 7

E B 8

E D 9

关于如何将上述三个变量转换为下面的矩阵形式的任何想法,我的目标是使用此matix构建热图

B   D   F

A 1 4 5

C 6 2 7

E 8 9 3

任何人都可以帮助我在SAS中使用SAS / IML或其他程序吗?谢谢!

2 个答案:

答案 0 :(得分:1)

假设您使用的是最新版本的SAS / IML(13.1或更高版本),请使用HEATMAPCONT或HEATMAPDISC调用:

proc iml;
m = {1 4 5,
     6 2 7,
     8 9 3};
call heatmapcont(m) xvalues={B D F} yvalues={A C E};

有关详细信息,请参阅Creating heat maps in SAS/IML

答案 1 :(得分:0)

如果您先发布代码然后提出问题,那会更好。

我认为proc transpose是最快的解决方案。

data _t1;
input var1 $ var2 $ var3 5.;
cards;
A B 1 
C D 2
E F 3
A D 4
A F 5
C B 6
C F 7
E B 8
E D 9
run;

proc sort data=_t1;by var1;run;

proc transpose data=_t1 out=_t2(drop=_name_ rename=(var1=HereUpToYou));
by var1;
var var3;
id var2;
run;