全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
698 5
2022-09-23
新人发帖,请教各位大神一个问题。题目要求找出数据集a中country变量为US和us的观测,输出为新的数据集。
我先用了从
data a01;
set a;
country=upcase(country);  
where country='US';
run;
输出的数目是311条观测,不对。
尝试了第二种写法。
data a02;
set a;
where (country='US' or country='us');
run;

则能输出正确的316条的观测。
再试了第三种,可以输出316条观测。
data a03;
set a;
country01=upcase(country);  
where country01='US' ;
run;

第四种写法,也可以输出316条观测。
data a04;
set a;
country=upcase(country);  
run;

data a04_01;
set a04;
where country='US';
run;


后三种写法都可以输出正确的答案。那为什么第一种写法,upcase之后的观测值,不能在where语句中被识别到呢?
二维码

扫码加我 拉你入群

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

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

全部回复
2022-9-26 15:51:07
第一种方法中country变量的赋值语句其实没有作用,跑完看看log就知道了
二维码

扫码加我 拉你入群

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

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

2022-9-26 16:00:23
我比较好奇你的第三种方法为什么会是对的?
按道理 country01 变量应该是在where之后产生的,所以你的where语句应该没起到作用,你看看log没报warnning嘛?
二维码

扫码加我 拉你入群

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

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

2022-9-26 16:01:13
where语句不能与自动变量连用以及新创建的变量连用,因为where语句在pdv之前执行
二维码

扫码加我 拉你入群

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

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

2022-9-26 17:16:06
橙红的果士 发表于 2022-9-26 16:00
我比较好奇你的第三种方法为什么会是对的?
按道理 country01 变量应该是在where之后产生的,所以你的where ...
试了一下确实有报错,当时搞混了。
二维码

扫码加我 拉你入群

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

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

2022-9-26 17:16:42
橙红的果士 发表于 2022-9-26 16:01
where语句不能与自动变量连用以及新创建的变量连用,因为where语句在pdv之前执行
搞懂了,非常感谢您解惑。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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