全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5418 7
2012-08-30
我有N個變量x1-xn,每個變量有4種數值 1 2 3 4

然後我想新建四個變量y1 y2 y3 y4  
y1為每行里1 的數目, y2則為2的數目.

比如
x1 x2 x3 x4 x5  y1 y2 y3 y4
1    1   2   3   4    2  1   1    1
2    2   2   3   3    0  3   2    0

請問這在SAS中怎麼做? 有沒有類似於EXCEL countif的函數? 謝謝
二维码

扫码加我 拉你入群

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

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

全部回复
2012-9-5 11:37:03
data test;
infile datalines;
input x1 x2 x3 x4 x5;
datalines;
1    1   2   3   4
2    2   2   3   3
4    4   3   2   1
;
run;
options mprint mlogic;
%macro countif(orgset, num);
data &orgset;
   set &orgset;
   array y(4) y1-y4 (0 0 0 0);
   %do i=1 %to #
           select (x&i);
             %do j=1 %to 4;
                   when(&j) y&j=y&j+1;
                 %end
             otherwise;
           end;
   %end;
run;
%mend countif;
%countif(test,5)
二维码

扫码加我 拉你入群

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

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

2012-9-5 21:38:36
和楼上差不多的:
复制代码
二维码

扫码加我 拉你入群

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

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

2012-9-11 10:53:47
学习了,很有效!多谢
二维码

扫码加我 拉你入群

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

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

2012-9-11 16:25:24
data test;
infile datalines;
input x1 x2 x3 x4 x5;
datalines;
1    1   2   3   4
2    2   2   3   3
4    4   3   2   1
;
run;

data a;
    set test;
    y=cat(of x1-x5);
    y1=length(y)-length(compress(y,'1'));
    y2=length(y)-length(compress(y,'2'));
    y3=length(y)-length(compress(y,'3'));
    y4=length(y)-length(compress(y,'4'));
run;
二维码

扫码加我 拉你入群

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

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

2012-9-12 12:02:11
nomad5 发表于 2012-9-11 16:25
data test;
infile datalines;
input x1 x2 x3 x4 x5;
聪明。
如果用length(kcompress(y,i,'k')是不是更直接一些。
我没有试,不知道行不行。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群