全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2540 7
2007-04-22

小弟是sas的初学者,现在碰倒了一个问题,如下

Data Census2001;
infile 'indiv-ver2-050824.dat' lrecl=266;
input PROVP 1-2
AGEP 39-40

MOB5P 134
MOB1P 135
PROV5P 136-137
PROV1P 138-139;

Data Woman_2001_5year;
set Census2001;

if MOB5P=5 then migrant=1; else migrant=0;

if 18<=AGEP<=64;
if 18<=AGEP<=24 then AGEP=entry;
else if 25<=AGEP<=34 then AGEP=younger;
else if 35<=AGEP<=44 then AGEP=prime-younger;
else if 45<=AGEP<=54 then AGEP=prime-older;
else if 55<=AGEP<=64 then AGEP=older;

proc means; var AGEP ; by migrant;

结果在log里面显示

NOTE: Variable entry is uninitialized.
NOTE: Variable younger is uninitialized.
NOTE: Variable prime is uninitialized.
NOTE: Variable older is uninitialized.
NOTE: Missing values were generated as a result of performing an operation on missing values.
Each place is given by: (Number of times) at (Line):(Column).
66850 at 192:32 59135 at 193:32
请问各位大虾,我的问题出在哪里,感谢了

二维码

扫码加我 拉你入群

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

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

全部回复
2007-4-22 08:32:00
你是不是想对新的变量AGEP根据年龄情况依次赋值entry之类的,这是你要加上引号,表示是字符类型的值。if 18<=AGEP<=24 then AGEP='entry';其它都要加上引号,不然SAS会把entry等做为一个变量来处理,在你的数据集中没定义这几个变量,因此会出现变量没初始化的提示。这是个人看法
二维码

扫码加我 拉你入群

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

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

2007-4-22 08:42:00

二楼找对了问题所在之处,但是方法不可行。即便是加上引号也没有用的,因为你把一个字符常值赋给一个数值变量,系统会自动把字符值转换为数值值,而‘entry’之类无法正常转换,故还是会出现错误

二维码

扫码加我 拉你入群

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

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

2007-4-22 12:41:00
谢谢各位热心指教啊.小弟我学习sas才几天,所以比较基本问题都没搞好,现在已经解决了.除了对entry加引号外,还需要对AGEP这个变量名称进行改变,改变为AGEP1或者其他什么的,因为AGEP前面已经定义了数字,后面又定义成字符串sas就无法识别了.
二维码

扫码加我 拉你入群

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

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

2007-4-22 12:46:00

另外一个比较奇怪的问题是,sas似乎无法识别比较长的字符串,除非你在后面用lable进行定义,否则它好象把我的prime-younger和prime-older合并为一个prime了,我只好从新定义为a1和a2它才能正确处理.

二维码

扫码加我 拉你入群

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

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

2007-4-22 13:47:00
好像都没加上$这个符号啊!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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