楼主: vieri32
5492 7

[原创博文] sas 有類似於excel countif 函數嗎 [推广有奖]

  • 1关注
  • 0粉丝

硕士生

22%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1062 点
帖子
88
精华
0
在线时间
110 小时
注册时间
2009-12-6
最后登录
2021-7-12

楼主
vieri32 发表于 2012-8-30 21:46:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有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的函數? 謝謝
二维码

扫码加我 拉你入群

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

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

关键词:COUNTIF EXCEL Count exce xcel excel EXCEL 新建

沙发
haku_x300 发表于 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)

藤椅
YueweiLiu 发表于 2012-9-5 21:38:36
和楼上差不多的:
  1. data have;
  2.         input x1 x2 x3 x4 x5;
  3. cards;
  4. 1    1   2   3   4
  5. 2    2   2   3   3
  6. 4    4   3   2   1
  7. ;

  8. data want;
  9.         set have;
  10.         array xtmp x:;
  11.         call missing(of y1-y4);
  12.         do over xtmp;
  13.                 y1+(xtmp=1);
  14.                 y2+(xtmp=2);
  15.                 y3+(xtmp=3);
  16.                 y4+(xtmp=4);
  17.         end;
  18. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
webgu + 1 + 1 + 1 第一个选择也是数组

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

板凳
sunset1986 发表于 2012-9-11 10:53:47
学习了,很有效!多谢
An honest tale speeds best being plainly told.
Cheers!

报纸
nomad5 发表于 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;

地板
ryuuzt 发表于 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')是不是更直接一些。
我没有试,不知道行不行。

7
nomad5 发表于 2012-9-12 12:26:04
ryuuzt 发表于 2012-9-12 12:02
聪明。
如果用length(kcompress(y,i,'k')是不是更直接一些。
我没有试,不知道行不行。
这样压缩,如果i不存在,那么y为空值,长度为1.

8
vieri32 发表于 2012-9-13 20:48:41
太厲害了!!!十分感謝!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 23:48