楼主: lujiayi
6574 6

求教:The SAS data set TEMP [推广有奖]

  • 0关注
  • 0粉丝

本科生

18%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
505 点
帖子
47
精华
0
在线时间
80 小时
注册时间
2008-10-9
最后登录
2016-1-1

楼主
lujiayi 发表于 2010-5-4 15:55:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
45. The SAS data set TEMP has the following distribution of values for variable A:
TEMP

A Frequency
1 500,000
2 500,000
6 7,000,000
8 3,000

Which SAS pr ogram
requires the least amount of CPU resources to be processed?  

A.data new; set temp; if a = 8 then b = 'Small '; else if a in(1, 2) then b = 'Medium'; else if a
= 6 then b = 'Large'; run;  

B.data new; set temp; if a in (1, 2) then b = 'Medium'; else if a = 8 then b = 'Small'; else if a
= 6 then b = 'Large'; run;  

C.data new; set temp; if a = 6 then b = 'Large '; else if a in (1, 2) then b = 'Medium'; else if
a = 8 then b = 'Small'; run;  

D.data new; set temp; if a in (1, 2) then b = 'Medium'; else if a = 6 then b = 'Large '; else if
a = 8 then b = 'Small'; run;  

Answer: C

请问为什么是C而不是D啊? 这是adv130上的题目
二维码

扫码加我 拉你入群

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

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

关键词:Data Temp Set TEM The 求教

回帖推荐

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

1# lujiayi if-else 执行机制是一旦某个if条件为真则跳出整个if-else,否则依次逐个对每个if条件进行判别。 举例说,第a1行数据第b1个if条件为真,第a2行数据第b2个if条件为真 那么若b1>b2则,第a1行数据比起第a2行执行这个if-else语句要进行更多(b2-b1)if条件的判断,所有需要更长的CPU时间 基于这个判断,在变量偏度很高的情况下,为了减少理论上的CPU时间,应将FREQ较高的取值分支写在较前的if-else分支中。 这仅仅 ...

本帖被以下文库推荐

沙发
soporaeternus 发表于 2010-5-4 17:01:35
1# lujiayi
if-else 执行机制是一旦某个if条件为真则跳出整个if-else,否则依次逐个对每个if条件进行判别。
举例说,第a1行数据第b1个if条件为真,第a2行数据第b2个if条件为真
那么若b1>b2则,第a1行数据比起第a2行执行这个if-else语句要进行更多(b2-b1)if条件的判断,所有需要更长的CPU时间

基于这个判断,在变量偏度很高的情况下,为了减少理论上的CPU时间,应将FREQ较高的取值分支写在较前的if-else分支中。

这仅仅是一道考题,实际运用中,或许FORMAT会是一个不错的选择。对于不同分布的变量取值,select-when和if-else的选择也是一个有趣的问题......

希望对你有帮助
已有 1 人评分经验 论坛币 学术水平 热心指数 收起 理由
crackman + 100 + 100 + 1 + 1 精彩帖子

总评分: 经验 + 100  论坛币 + 100  学术水平 + 1  热心指数 + 1   查看全部评分

Let them be hard, but never unjust

藤椅
crackman 发表于 2010-5-4 17:28:12
我来补充一下:
是不是这个意思 soporaeternus ?
A Frequency
1 500,000
2 500,000
6 7,000,000
8 3,000
现在根据FREQUENCY来判断,6最多,其次是1 2 然后是8
如果开始if 来判断,选择的是8 的话,那么就开始寻找数据等于8的对象,寻找的时间应该类似对整个数据进行一次检查一下,是8还是不是8,那么有50W个1 ,50W个2, 700W个6,3000个8,那么就要比对50W+50W+700W+3000次,判断成功了,那么接下来检查是不是1 和2,同样来进行一次检查,但是这次检查的对象除去了3000个8,比对50W+50W+700W次,最后是6,只要比对700W次,等于说这个时间里面最大的比重是FREQ大的数字,比对8 比对1 2 的时候都要去比对是不是等于6,比一次就是700W,两次就是700W+700W总的时间就包括了3个700W
如果一开始就是6,那么就只花一次700W的比对,后面就轻松的了,花的时间也少了
非计算机认识
话不专业但是应该好理解吧

板凳
soporaeternus 发表于 2010-5-4 17:36:24
3# crackman
不是。
是对if-else分支判断的次数
写在越后面的if语句,若某条数据对于它来说为真,则之前它做的判别就越多(之前的判别结果都是0)。
Let them be hard, but never unjust

报纸
yatming 发表于 2010-5-4 17:49:20
4# soporaeternus
恩,这里C选项的判断计算量是700W×1+50w×2+50w×2+3K×3。

地板
crackman 发表于 2010-5-4 17:59:24
搞计算机非计算机专业人士的差距啊
向楼上两位学习
牛人!

7
jesserock 发表于 2011-4-16 17:38:22
楼上都是高手,不管是不是计算机专业人士

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 04:43