全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4057 6
2011-01-24
The following SAS program is submitted:
data work.staff;
JobCategory= 'FA';
JobLevel= '1';
jobCategory= JobCategory || JobLevel;
run;
Which one of the following is the value of the variable JOBCATEGORY in the
output data set?

A. FA
B. FA1
C. FA 1
D. ' ' (missing character value)

为什么答案是选 A?
二维码

扫码加我 拉你入群

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

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

全部回复
2011-1-24 09:34:40
不能在原变量上链接吧?生成一个新变量可以
二维码

扫码加我 拉你入群

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

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

2011-1-24 09:45:04
大小写不影响么?就是说这样改不了JOBCATEGORY的值,对么?
二维码

扫码加我 拉你入群

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

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

2011-1-24 10:21:48
原因有二:
第一,JobCategory和jobCategory同名;而第二点更主要。
第二,sas在读取JobCategory= 'FA';时,已经自动把JobCategory设置为两个字符串,所以,当执行jobCategory= JobCategory || JobLevel; 时,JobCategory内的数据被系统truncate截取成两个字符串,而不会再读进后面的1。
如果你将程序改成:
data work.staff;
JobCategory= 'FA';
JobLevel= '1';
jobCategory1= JobCategory || JobLevel;
proc print;run;
结果就截然不同了:
                       Job          Job           job
                             Obs    Category    Level    Category1

                              1        FA         1         FA1
二维码

扫码加我 拉你入群

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

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

2011-1-24 11:30:49
去了解一下sas的编译过程,就知道了。
变量的属性,包括长度,在编译过程中就会确定,因为没有对JobCategory的长度进行人为设定,所以在编译时sas会根据其最先出现的值的长度来确定,确定之后,在执行过程中会严格按照这个长度来读取。
二维码

扫码加我 拉你入群

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

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

2011-1-24 11:35:49
另外还有 || 连接符。
即便对jobcategory的长度进行设定,按照例子里的程序,结果也只能是jobcategory的原始值。
因为||在连接的时候,是直接连接,如果长度不够,会自动补充空格,意思就是仍然保留字符型变量后面的空格,具体可参照:http://elek.me/ways-to-concatena ... ings-using-sas.html
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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