楼主: bravedream
2578 4

SAS base 一道问题请教 [推广有奖]

  • 0关注
  • 0粉丝

小学生

21%

还不是VIP/贵宾

-

威望
0
论坛币
42 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
80 点
帖子
4
精华
0
在线时间
3 小时
注册时间
2007-2-15
最后登录
2009-10-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
初学SAS,比较基础的问题。为啥要选B,麻烦解释下当level=4时候,if--then, else if 组怎么运行的。谢谢!

A SAS PRINT procedure output of the WORK.LEVELS data set is listed below:
Obsname level
1 Frank 1
2 Joan 2
3 Sui 2
4 Jose 3
5 Burt 4
6 Kelly .
7 Juan 1
The following SAS program is submitted:
data work . expertise;
set work. levels;
if level = . then
expertise = 'Unknown';
else if level = 1 then
expertise = 'Low';
else if level = 2 or 3 then
expertise =' Medium';
else
expertise = 'High';
run;
Which of the following values does the variable EXPERTISE contain?
A. Low, Medium, and High only
B. Low, Medium, and Unknown only
C. Low, Medium, High, and Unknown only
D. Low, Medium, High, Unknown, and ' ' (missing character value)
二维码

扫码加我 拉你入群

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

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

关键词:SAS base Base following Procedure Character 请教 SAS Base

回帖推荐

sascylindrical 发表于3楼  查看完整内容

2楼说得对,这道题目的考点在于"else if level = 2 or 3 then expertise =' Medium';"这条语句,为了图省事,把“if level = 2 or level = 3”给错写成了“if level = 2 or 3”,逻辑关系就完全变化了,逻辑分支走到这里永远为真就自动退出了,而“else expertise = 'High';”这一句永远也不会被执行。 你可以拷贝下面的Code,修改“else if level = 2 or 3 then expertise =' Medium';”为“else if level = 2 or lev ...

yiyuanfushi 发表于2楼  查看完整内容

Question 111 "if level = 2 or 3"means "if level = 2 or if 3". 非0的数字就代表True. 在这里,判断总是为True,因为3是大于1的。所以 除了 level = .和level = 1以外,所有level都会让expertise =' Medium'。"else expertise = 'High';" 不会执行.

本帖被以下文库推荐

沙发
yiyuanfushi 发表于 2009-6-30 04:57:46 |只看作者 |坛友微信交流群
Question 111
"if level = 2 or 3"means "if level = 2 or if 3". 非0的数字就代表True. 在这里,判断总是为True,因为3是大于1的。所以 除了 level = .和level = 1以外,所有level都会让expertise =' Medium'。"else expertise = 'High';" 不会执行.
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

藤椅
sascylindrical 发表于 2009-6-30 05:37:29 |只看作者 |坛友微信交流群
yiyuanfushi 发表于 2009-6-30 04:57
Question 111
"if level = 2 or 3"means "if level = 2 or if 3". 非0的数字就代表True. 在这里,判断总是为True,因为3是大于1的。所以 除了 level = .和level = 1以外,所有level都会让expertise =' Medium'。"else expertise = 'High';" 不会执行.
2楼说得对,这道题目的考点在于"else if level = 2 or 3  then  expertise =' Medium';"这条语句,为了图省事,把“if level = 2 or level = 3”给错写成了“if level = 2 or 3”,逻辑关系就完全变化了,逻辑分支走到这里永远为真就自动退出了,而“else  expertise = 'High';”这一句永远也不会被执行。

你可以拷贝下面的Code,修改“else if level = 2 or 3  then  expertise =' Medium';”为“else if level = 2 or level = 3  then  expertise =' Medium';”看看结果有什么不同。

Data levels;
input Obs name $ level;
datalines;
1 Frank 1
2 Joan 2
3 Sui 2
4 Jose 3
5 Burt 4
6 Kelly .
7 Juan 1
;
run;
data expertise;
set levels;
if level = . then  expertise = 'Unknown';
else if level = 1 then  expertise = 'Low';
else if level = 2 or 3  then  expertise =' Medium';
else  expertise = 'High';
run;
proc print data = expertise;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

板凳
bravedream 发表于 2009-7-3 02:11:51 |只看作者 |坛友微信交流群
2# yiyuanfushi

非常感谢!这种问法确实比较迷惑人。

使用道具

报纸
bravedream 发表于 2009-7-3 02:12:19 |只看作者 |坛友微信交流群
3# sascylindrical

好的 谢谢!我试一下

使用道具

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

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

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

GMT+8, 2024-5-1 14:01