全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2010 14
2012-04-04
98.jpg
我想问一下 这个图片里
year=subsr(date,1,4)*1;
mon=substr(date,6,2)*1;
acyrmon=year*100+mon;

if last. year;
是什么意思
都代表什么?

求你们帮帮我~
二维码

扫码加我 拉你入群

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

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

全部回复
2012-4-4 21:02:06
year就是年,因为是string所以乘以1变为int,同理mon。因为这样所以acyrmon就可以相加了。last.year是year的group。这里就是年份和code6一样的取最后一个年的row。但是这里程序有点问题,by code6 year应该放在if 语句的前面。
二维码

扫码加我 拉你入群

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

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

2012-4-4 21:20:43
peterpan_aus 发表于 2012-4-4 21:02
year就是年,因为是string所以乘以1变为int,同理mon。因为这样所以acyrmon就可以相加了。last.year是year的 ...
对不起~我真的不太会用这个sas~能说的 详细一点吗~ 恕我愚笨~string 在这是什么意思?我还是没有明白为什么 要 *1~
二维码

扫码加我 拉你入群

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

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

2012-4-4 21:21:44
substr()是SQL函数,取子字符串,substr('目标字符串',开始位置,长度)
,year就是取date的前四个字符,mon是取date第6、7个字符
二维码

扫码加我 拉你入群

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

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

2012-4-4 21:32:06
水晶石斑鱼 发表于 2012-4-4 21:21
substr()是SQL函数,取子字符串,substr('目标字符串',开始位置,长度)
,year就是取date的前四个字符,mo ...
data SD;
        informat coname $50. code6 $6. date $7. byear $10.;
        infile "C:\Documents and Settings\Administrator\桌面\Life Cycle.csv" firstobs=2 lrecl=1000 dlm=',' dsd missover;
        input coname $ code6 $ date $ div income sales a01-a10 b01-b10 stock_price share non_lib byear;
        year=substr(date,1,4)*1;
        mon=substr(date,6,2)*1;
        acyrmon=year*100 + mon;
        byear=substr(acyrmon,1,4);
        keep coname code6 acyrmon div income sales a01-a10 b01-b10 stock_price share non_lib byear;
        proc sort data=SD;
                by code6 ;
  run;

那我可以问一下 我仿照 这个程序 为啥做出来的 byear 和acyrmon 全是空白 不显示呢
我的byear 的数据 都是年份 是Dec-11这种格式的 我应该怎么弄?
摆脱帮帮我~
二维码

扫码加我 拉你入群

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

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

2012-4-4 22:40:46
serenaakh 发表于 2012-4-4 21:32
data SD;
        informat coname $50. code6 $6. date $7. byear $10.;
        infile "C:\Documents and Settings ...
substr里的参数应该要是字符串才对,你acyrmon是一个数值型的变量,所以substr会出错,进而导致byear出错。希望有帮助!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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