全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
895 2
2012-11-27
悬赏 20 个论坛币 已解决
向朋友们求助一个问题,楼主的脑子八成已经梗掉了,个人觉得问题不难,但是活活想了一个下午。。
有个数据集如下:

x
y
1 2
2 2
3 2


例如这个数据集就叫abc

我现在想对这个数据集做一个判断:如果x(或y)的3个值都一样,就做一件事(只做一次)。

例如:
%let abc=0;
data abc;set abc;
if (判断某个变量) then symputx('abc',1+symget("abc"));
run;

本来想用dif函数去做,好像又绕远了;在线等,谢谢了!!

最佳答案

Imasasor 查看完整内容

没太明白意思,意思是如果变量的值都一样,你的宏变量就加上1吗? 如果是这样,程序可以这样写 %let abc=0; proc sql; create table sb as select distinct(x) from abc; quit; proc sql; select count(*) into:n from sb; quit; %if &n=1 %then %do; %let abc=%eval(&abc+1); %end;
二维码

扫码加我 拉你入群

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

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

全部回复
2012-11-27 22:17:04
没太明白意思,意思是如果变量的值都一样,你的宏变量就加上1吗?
如果是这样,程序可以这样写
%let abc=0;
proc sql;
create table sb as select distinct(x) from abc;
quit;
proc sql;
select count(*) into:n from sb;
quit;
%if &n=1 %then %do;
%let abc=%eval(&abc+1);
%end;
二维码

扫码加我 拉你入群

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

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

2012-11-27 23:40:01
Imasasor 发表于 2012-11-27 22:40
没太明白意思,意思是如果变量的值都一样,你的宏变量就加上1吗?
如果是这样,程序可以这样写
%let abc= ...
很对,谢谢斑竹,如果能直接在data步内完成该多好,谢谢了。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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