楼主: serenaakh
2067 14

关于sas 程序的问题 跪求你们帮帮我 [推广有奖]

  • 4关注
  • 1粉丝

本科生

90%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
102 点
帖子
115
精华
0
在线时间
77 小时
注册时间
2010-10-14
最后登录
2016-5-30

楼主
serenaakh 发表于 2012-4-4 20:15:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
98.jpg
我想问一下 这个图片里
year=subsr(date,1,4)*1;
mon=substr(date,6,2)*1;
acyrmon=year*100+mon;

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

求你们帮帮我~
二维码

扫码加我 拉你入群

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

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

关键词:SUBSTR 是什么意思 year subs date

回帖推荐

wh_wing 发表于9楼  查看完整内容

year=substr(date,5,2)*1+1900;

本帖被以下文库推荐

你生活在一个可以没有我的世界,我居住在一个只有你的天空...

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

藤椅
serenaakh 发表于 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个字符
THE SLEEPER HAS AWAKEN.

报纸
serenaakh 发表于 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这种格式的 我应该怎么弄?
摆脱帮帮我~
你生活在一个可以没有我的世界,我居住在一个只有你的天空...

地板
wh_wing 发表于 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出错。希望有帮助!

7
serenaakh 发表于 2012-4-4 22:50:40
wh_wing 发表于 2012-4-4 22:40
substr里的参数应该要是字符串才对,你acyrmon是一个数值型的变量,所以substr会出错,进而导致byear出错 ...
你说的 我明白了~ 可是  我的  date 的格式 都是 Dec-81
Mar-82
Mar-83
Mar-84
Mar-85
Mar-86
Mar-87
Mar-88
Mar-89
Mar-90
Mar-91
Mar-92
Mar-93
Mar-94
Mar-95
Mar-96
Mar-97
这种形式的~
我想把它们都改成 只有 年份的(例如1986 1987 1988 1989)~
可以么? 你有什么办法么?
你生活在一个可以没有我的世界,我居住在一个只有你的天空...

8
peterpan_aus 发表于 2012-4-4 23:01:06
acyrmon=year*100 + mon;
byear=substr(put(acyrmon,$4.),1,4);

9
wh_wing 发表于 2012-4-4 23:09:35
serenaakh 发表于 2012-4-4 22:50
你说的 我明白了~ 可是  我的  date 的格式 都是 Dec-81
Mar-82
Mar-83
year=substr(date,5,2)*1+1900;

10
serenaakh 发表于 2012-4-5 00:03:33
wh_wing 发表于 2012-4-4 23:09
year=substr(date,5,2)*1+1900;
是这个样子么?
data lc;
informat coname $50. code6 $6. date $7.;
infile 'C:\Documents and Settings\Administrator\桌面\LC data.csv' dlm = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;
input coname $ code6 $ date $ byear div income sales a01-a10 b01-b10 stock_price share non_lib;
year=substr(date,5,2)*1+1900;
acyrmon=year;
keep coname code6 date byear div income sales a01-a10 b01-b10 stock_price share non_lib byear;
run;

我还是出不来~还是Dec-89 这种样子
你生活在一个可以没有我的世界,我居住在一个只有你的天空...

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 03:41