将 3 个变量转换为矩阵形式以在 SAS 中创建热图
converting 3 variable into a matrix form to create a heatmap in SAS
我正在尝试将 3 个变量转换为矩阵,例如,如果您有以下内容:
(CHAR) (char) (num)
Var1 Var2 Var3
A B 1
C D 2
英法 3
AD 4
A F 5
C B 6
C F 7
E B 8
E D 9
关于如何将上述三个变量转换为下面这种形式的矩阵的任何想法,我的目标是使用此矩阵构建热图
B D F
1 4 5
C 6 2 7
E 8 9 3
任何人都可以使用 SAS/IML 或其他程序帮助我在 SAS 中执行此操作吗?谢谢!
如果你先post你的代码然后提问会更好。
我认为 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;
假设您使用的是最新版本的 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};
我正在尝试将 3 个变量转换为矩阵,例如,如果您有以下内容:
(CHAR) (char) (num)
Var1 Var2 Var3
A B 1
C D 2
英法 3
AD 4
A F 5
C B 6
C F 7
E B 8
E D 9
关于如何将上述三个变量转换为下面这种形式的矩阵的任何想法,我的目标是使用此矩阵构建热图
B D F
1 4 5
C 6 2 7
E 8 9 3
任何人都可以使用 SAS/IML 或其他程序帮助我在 SAS 中执行此操作吗?谢谢!
如果你先post你的代码然后提问会更好。
我认为 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;
假设您使用的是最新版本的 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};