楼主: Tigflanker
921 2

[问答] 求助一个小问题,但是就是不会做 [推广有奖]

  • 8关注
  • 18粉丝

副教授

49%

还不是VIP/贵宾

-

威望
0
论坛币
2321 个
通用积分
9.9128
学术水平
179 点
热心指数
194 点
信用等级
167 点
经验
27443 点
帖子
622
精华
0
在线时间
851 小时
注册时间
2011-3-27
最后登录
2023-5-14

楼主
Tigflanker 发表于 2012-11-27 22:17:03 |AI写论文
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;
关键词:小问题 symput Then Data ABC 在线 朋友
Bye SAS.
若有缘,能重聚。

沙发
Imasasor 发表于 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;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Tigflanker + 1 + 1 + 1 好的,谢谢,我先嵌入调整一下,谢谢。

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

欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 06:54