楼主: cynthialam
5378 3

[原创博文] 用SAS实现“数据—矩阵”的效果,类似数据透视表 [推广有奖]

  • 0关注
  • 4粉丝

博士生

44%

还不是VIP/贵宾

-

威望
0
论坛币
3021 个
通用积分
5.0600
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
145 点
帖子
261
精华
0
在线时间
98 小时
注册时间
2009-2-7
最后登录
2022-7-21

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
VAR1        VAR2
A        B
B        A
B        C
C        B
C        D
D        C
E        F
E        H
F        E
F        G
G        F
H        E

上述数据,如果用Excel数据透视表,可以做成下述的效果:
计数项:VAR1        A        B        C        D        E        F        G        H        总计
A        0        1        0        0        0        0        0        0        1
B        1        0        1        0        0        0        0        0        2
C        0        1        0        1        0        0        0        0        2
D        0        0        1        0        0        0        0        0        1
E        0        0        0        0        0        1        0        1        2
F        0        0        0        0        1        0        1        0        2
G        0        0        0        0        0        1        0        0        1
H        0        0        0        0        1        0        0        0        1
总计        1        2        2        1        2        2        1        1        12

现在想说,能不能拿SAS实现这种效果的呢?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据透视表 透视表 excel数据 用excel EXCEL Excel

本帖被以下文库推荐

沙发
cynthialam 发表于 2011-12-21 17:30:03 |只看作者 |坛友微信交流群
果然没人回答。。。。。

SAS果然是我的软肋啊。。。。

果断投奔Clementine的怀抱~

就是不知道Clementine支持多大的数据量?

使用道具

藤椅
maidenhan 发表于 2011-12-21 18:28:51 |只看作者 |坛友微信交流群
data test1;
        input var1 $ var2 $ @@;
cards;
A B
B A
B C
C B
C D
D C
E F
E H
F E
F G
G F
H E
;run;
data test2;
        set test1(keep = var1 rename=(var1=var))
                test1(keep = var2 rename=(var2=var));
run;
proc sort data = test2 nodupkey; by var; run;
proc sort data = test1 nodupkey; by _all_; run;

%macro test_macro();
data _null_;
        set test2 nobs=n;
        call symput(cats('v',_n_), var);
        if _n_ = n then do;
                call symput('n' ,n);
                stop;
        end;
run;
data test3(drop = var1-var2 var_add);
        if 0 then set test1;
        if _n_ = 1 then do;
                dcl hash h(dataset:"test1");
                h.definekey("var1","var2");
                h.definedata("var1","var2");
                h.definedone();
        end;
        set test2;
        %do ii = 1 %to &n.;
                _&&v&ii.. = 0;
        %end;
        %do ii = 1 %to &n.;
                var_add = compress("&&v&ii..");
                if h.find(key:var, key:var_add) = 0 then _&&v&ii.. = 1;
        %end;
run;
%mend;
%test_macro();

使用道具

板凳
soporaeternus 发表于 2011-12-22 10:42:00 |只看作者 |坛友微信交流群
proc tabulate。。。。。。
Let them be hard, but never unjust

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 01:55