注册地址 登录
数学建模社区-数学中国 返回首页

Inconceivable··· http://www.madio.net/?498319 [收藏] [复制] [分享] [RSS] 希望今年的数模之路不可思议···

日志

sas知识基础学习(二)

已有 720 次阅读2012-7-23 23:56 | sas知识基础学习

 

 

sas知识基础学习(中篇)

 

sas常数:数值常数;常见的数字:标准格式:1-1;科学计数法:1.1e11;十六进制格式:1cx,12x,9x;x表示为十六进制
        
字符常数:用单引号括起来,如果字符常数内含有引号,引用时,要么它的引号用两个连续的单引号,要么用一个双引号。
        
日期时间常数:要使用相应的格式值,格式值带单引号,后面跟一个d(日期),t(时间),dt(日期时间) '01jan00'd;'9:25't,'12jan02:9:27:00'dt
        
十六进制字符常数:'533'x,x紧跟在引号部分后面。
        
data;
x='good ';
y='morning';
z=x||y; /*
连接算符||,<>取最大,><取最小 */
put z;
run;

good morning
NOTE: The data set WORK.DATA38 has 1 observations(
观测) and 3 variables(变量).
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.00 seconds

sas
变量:数值变量,字符变量
        
数值变量是以浮点(floating-point)方式存储的数据变量,数值变量包括日期和时间. 数值变量的值只能是数值。
        
字符变量名后跟一个美元符($):表示该变量是字符型而不是数值型。
sas
变量属性:包括长度,输入输出格式和标签。

创建变量:使用赋值语句;使用input语句;使用format语句或informat语句;使用length语句;使用attrirb语句
         
使用赋值语句:如果等号左边的变量不存于数据集中,则赋值语句会产生一个新的变量
         
使用input语句:input x $;
          format
informat分别设定变量的输出和输入格式。
                        
变量类型转化:字符自动转化为数值
            data ;
            x=1;
            y='10';
            z=x+y;
            put z;
            run;  
       input
函数 input(数据源,输入格式)将字符转化为数值
           data;
           y=input('5688',$3.);
           put y;
           run;
      
数值能自动转化为字符:
             data;
             x='10';
             y=10;
             x=y;
             put x;
             run;
NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column).
     put
函数将数值转化为字符:put(数据源,输出格式):
       data;
       x=3888.00;
       y=put(x,8.3);
       put y;   --
结果是 3888.000
       run;       
    
      data;
      x=put('28000.00',$3.); 
      put x;                 --
结果是280
      run;
     
      data;
      x=put('280.00',$5.);
      put x;            --
结果是 280.0(五位数,包括小数点)
      run;
     
sas
自动变量:由数据步语句自动创建的。
             _n_ :
观测序号; _error_错误信息变量; _numeric_ 所有数值变量; _character_所有字符变量;
             _all_
所有变量; fisrt.variable同一by组第一个观测;last.variable同一by组最后一个观测;
            
            
 
日期时间函数:
       data;
      x=date ();
      y=today();
      format x y yymmdd10.;
      put x= y=;
      run;
     
结果是x=2004-11-07 y=2004-11-07

data _null_;                        
sdate='01jan2002'd;                 
edate='01jan2003'd;                 
actual=datdif(sdate,edate,'act/act');  --
按照每个月的实际天数算
days30=datdif(sdate,edate,'30/360');   --
按照每个月30天算
put actual= days30=;                
run;
结果是:actual=365 days30=360
    
     data;                                            
     n=datetime();         
     put n=;              
     x=datetime();        
     put x=;              
     format x datetime20.4;
     y=datetime();        
     put y=;              
     format y nldatm20.;  
     m=time();            
     put m=;              
     z=time();            
     put z=;              
     format z hhmm8.2;    
     run;
   
结果是:n=1415483760.8       
            x=07NOV04:21:56:00.843         
            y=04-11- 7
下午09:56 
            m=78960.843          
            z=21:56.01         
           
         data;                          
         h=hour(datetime()); put h=;    --
计算当天时间的小时数
         m=minute(datetime()); put m=;   --
计算当天时间的分钟数
         run;                           
          
结果是:h=21
                   m=58
                  
   data;                                    
   mdy=mdy(08,18,2001);                      
   put mdy=;                                 
   format mdy yymmdd10.;                     
   hms=hms(21,50,51);                         
   put hms=;                                 
   x=21*60*60+50*60+51;                      
   put x=;                                   
   dhms=dhms(date(),21,50,51);               
   put dhms=;                
   dhms=dhms(15263,21,50,51);
   put dhms=;                
   y=15263*24*3600+x;        
   put y=;                   
   run;         
  
结果是:mdy=2001-08-18
           hms=78651     
           x=78651       
           dhms=1415483451    
           dhms=1318801851
           y=1318801851 
          
          
import
过程步:
           proc import
           datafile="filename"|table="tablename"
           out=sas-data-set
          
其中:datafile= 规定要读入外部文件的地址及其名称;table=规定外部数据文件中表名;out=规定要输出的sas数据集;
                 dbms=
规定外部数据文件格式的标识名;replace 规定替换已存在文件          
 PROC IMPORT OUT= CE1.DEPT222                   
             DATAFILE= "E:\ce2.xls"             
             DBMS=EXCEL REPLACE;                         
      SHEET="EMP1";                             
      GETNAMES=YES; /*
获取字段的名字 */         
      MIXED=NO;                                 
      SCANTEXT=YES;                             
      USEDATE=YES;                              
      SCANTIME=YES;                             
 RUN;     
 
 libname
建立逻辑库和数据库连接:
          libname oralib oracle user=scott password=p path=liutest dbindex=y  --
oracle类型的数据库连接
         
取消逻辑库:libname oradb clear;        --oradb是逻辑库名字
         
db2的连接:libname db2lib db2 authid=scott ssid=p;  
          820  libname ce1  clear;                                                
          NOTE: Libref CE1 has been deassigned.


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-12 05:01 , Processed in 0.258025 second(s), 27 queries .

回顶部