SAS中文论坛

标题: 请教left函数的问题,谢谢 [打印本页]

作者: shiyiming    时间: 2009-2-5 15:19
标题: 请教left函数的问题,谢谢
菜菜鸟请教高手问题~
SAS数据集中有一列是数字形式的日期,比如20090101,字段名称为date
我想截取前四位作为年份,用left函数新增一列命名为year
year=left(date,4)
SAS老是报错,应该怎么改呢?
先谢过啦^_^
作者: shiyiming    时间: 2009-2-5 23:27
标题: Re: 请教left函数的问题,谢谢
left 函数好像是针对字符型数据的哦~~
作者: shiyiming    时间: 2009-2-6 08:59
标题: 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]
作者: shiyiming    时间: 2009-2-6 09:47
标题: Re: 请教left函数的问题,谢谢
LEFT函数是将字符左置(对齐)的意思,SAS报错是因为你的函数调用格式错了。.
时间函数提取年份,月份,日期有专门的函数.
处理方法一般是先将日期(可能是多种形式,如09FEB22,20090222等等)读入到SAS中,然后用函数year()提取.
作者: shiyiming    时间: 2009-2-23 16:33
标题: Re: 请教left函数的问题,谢谢
先把数字型的导入成date型;然后用year取
作者: shiyiming    时间: 2009-2-27 11:28
标题: Re: 请教left函数的问题,谢谢
如果是数字直接用year函数截取就可以,如果是字符要先转换为数字或者日期格式




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2