SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1462|回复: 5
打印 上一主题 下一主题

请教left函数的问题,谢谢

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-2-5 15:19:42 | 只看该作者

请教left函数的问题,谢谢

菜菜鸟请教高手问题~
SAS数据集中有一列是数字形式的日期,比如20090101,字段名称为date
我想截取前四位作为年份,用left函数新增一列命名为year
year=left(date,4)
SAS老是报错,应该怎么改呢?
先谢过啦^_^
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-2-5 23:27:07 | 只看该作者

Re: 请教left函数的问题,谢谢

left 函数好像是针对字符型数据的哦~~
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-2-6 08:59:01 | 只看该作者

Re: 请教left函数的问题,谢谢

如果是一个字符型变量,取前四位当然是用substr的字符函数。
如果是一个数字,取前四位,当然是用数学方法:
[code:3j9j9epp]
data a;
        input date;
        cards;
        20090103
        2009131
        200911
        ;
run;
data result;
        set a;
        n=ceil(log10(date));/*确定是一个几位数字*/
        if n>=4 then year=int(date/10**(n-4));
        else put '********小于4位的数字,怎么取前四位,请告知方法*************';
run;
[/code:3j9j9epp]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-2-6 09:47:00 | 只看该作者

Re: 请教left函数的问题,谢谢

LEFT函数是将字符左置(对齐)的意思,SAS报错是因为你的函数调用格式错了。.
时间函数提取年份,月份,日期有专门的函数.
处理方法一般是先将日期(可能是多种形式,如09FEB22,20090222等等)读入到SAS中,然后用函数year()提取.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-2-23 16:33:30 | 只看该作者

Re: 请教left函数的问题,谢谢

先把数字型的导入成date型;然后用year取
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-2-27 11:28:39 | 只看该作者

Re: 请教left函数的问题,谢谢

如果是数字直接用year函数截取就可以,如果是字符要先转换为数字或者日期格式
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 10:25 , Processed in 0.068685 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表