全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2534 1
2010-03-16
基本命令是这样的:

proc sort data=a;
by conm;

data a
set b;
if first.conm then var1=".";
run;

但是事实需要的是如果是第一个公司var2="." 并且 var3="."

我用了 if first.conm then var1="." and var2="." and var3=“."
就出现了相当奇怪的现象:

首先,var1的每组第一个 conm对应的var 1全变成了 0;(本来应该是".")
其次,var2 和var3 的只有第一个 conm对应的var2 和var3是".", 其他全部是原来的数据,没被替换掉;


但是如果我分开用if then句子:
也即if first.conm then var1=".";
       if first.conm then  var2=".‘;
这样出现的结果就是正常的,也即每组的的一个var1和var2全部是 ".";


这是怎么回事呢?

我能不能用一个if句实现我的目的呢?(让每组的的一个var1和var2全部是 ".") 是因为我"and"用的不对?
很想优化程序语言,大家有何高见?
--------------------------------------------
解决了,初学者,偶很菜。
用if then do;
就可以了。。。。。
祝大家天天进步!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-3-16 13:14:31
你的问题可能是:
1.VAR1 VAR2 VAR3的变量类型,是字符型还是数值型,我看你写的一个VAR1=".",你的意思是不是让VAR1为缺失值,数值型的变量为一点 字符型型的为一个空格
2.每组的第一个VAR1 VAR2为 .  原因是VAR1 VAR2没有初始化,是一个新的变量,没有初始化默认是数值型缺失值,就为.
3.你可以retain语句初始化VAR1 VAR2
不晓得解释清楚没
如果没有 欢迎高手来补充,谢谢
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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