1088 2

[技术讨论与投票] sas base 模考时遇到的n=upcase(n)问题 [推广有奖]

  • 1关注
  • 0粉丝

大专生

28%

还不是VIP/贵宾

-

威望
0
论坛币
143 个
通用积分
1.3801
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
415 点
帖子
30
精华
0
在线时间
57 小时
注册时间
2020-11-29
最后登录
2021-2-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
做sas base 模考时遇到一道题 ,题目如下:

·        Step 1:

o  Create a temporary data set, cleandata36.

o  In this data set, convert all groupvalue to upper case.

o  Then keep only observationswith group equal to ‘A’ or ‘B’.

·        Step 2:

o  Determine the MEDIAN value forthe Kilograms variable for each group (A,B) in the cleandata36data set. Round MEDIAN to the nearest whole number.

·        Step 3:

o  Create results.output36from cleandata36.

o  Ensure that all values forvariable Kilograms are between 40 and 200, inclusively.

o   If the value is missing or out of range, replace the value with theMEDIAN Kilograms value for the respective group (A,B) calculatedin step 2.

Run the program and use the results to answer the next 3 questions.

三个问题分别是:How many observations are in results.output36?What is the MEAN Kilograms value for group=’A’ in the results.output36 data set?  What is the MEAN Kilograms value for group=’B’ in the results.output36data set?


我第一个问题答案是4897,回答错了,正确答案是4992。但是后两个问题都回答正确。对比答案发现,问题可能是出现在step1的赋值上。

我的代码如下:

data cleandata360;

set cert.input36;

group=upcase(group);

where group in ("A" "B");  /*官方答案没有对group转化为大写,而是直接 if upcase(group) in ('A','B');其它步骤一样*/

run;


另外看到一种答案也得出4992的结果,代码如下:

data cleandata36a (drop =group);

set cert.input36;

group1=upcase(group);

run;


data new123;

set cleandata36a;

where group1 in ('A' 'B');

rename group1=group;


run;



求问 我的写法为什么会少观测值呢?先谢谢各位大佬了







二维码

扫码加我 拉你入群

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

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

关键词:SAS base upcase Base Case CAS

回帖推荐

洪哥得势1 发表于2楼  查看完整内容

这是因为where和if的区别所导致的,简单来讲,where在进PDV之前执行筛选,if在进入PDV之后执行筛选。具体可以搜索一下where与if的区别。 你的代码里如果把where换成if,出来的观测数就应该是对的了。 供参考~
沙发
洪哥得势1 发表于 2020-12-30 09:35:10 |只看作者 |坛友微信交流群
这是因为where和if的区别所导致的,简单来讲,where在进PDV之前执行筛选,if在进入PDV之后执行筛选。具体可以搜索一下where与if的区别。 你的代码里如果把where换成if,出来的观测数就应该是对的了。 供参考~

使用道具

洪哥得势1 发表于 2020-12-30 09:35
这是因为where和if的区别所导致的,简单来讲,where在进PDV之前执行筛选,if在进入PDV之后执行筛选。具体可 ...
谢谢回复!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 20:12