SAS 中最常用的一些功能(一)

编程语言是技能,其中有一些部分掌握了之后,就更容易有了一个基本的框架,再去学习其它的知识和功能就更轻松一些。有一个很常见的比喻是:编程学习是拼图,拼图中比较重要的是先拼出整个图的框架,之后每一块的位置才能够明确的定位,进而形成一个完整的图案。

下面提到的这些功能或者知识点,就可以理解成我在学习过程中的第一个框架。

1. Keep 和 Drop

使用这两个命令来选择想要保留或者舍弃的变量。

在Data Step中DROP variable-list 可以删除变量,类似的,使用KEEP variable-list 来保留变量。举例:

Data Test;
Set work.name;
Drop Full_name Gender;
Run;

Test这个数据集将保存work.name这个数据集的所有行,但是舍弃掉Full_name和Gender这两个变量。

Keep和Drop也可以作为Option使用。 在Data和Set命令中都可以应用:DATA output-SAS-Data-set (DROP = variable-list);SET input-SAS-data-set (KEEP = variable-list); 来实现对于变量的取舍,比如:

Data Test(Drop = Full_name Gender);
Set work.name;
Run;
 
Data Test;
Set work.name (Drop = Full_name Gender);
Run;

上面两个Data Step 将会和第一个同样的结果。

2. 导入数据

导入数据有几种方法,可以使用INFILE命令,也可以使用Proc Import

使用INFILE命令

INFILE '<external-file>' DLM=',' <Options>

  • 如果数据是外部文件的话,那么exernal-file就是外部文件的路径
  • DLM是分隔符,也就是数据使用什么作为分隔的,比如可以指定DLM='|'
  • Option中可以使用DSD,作用是
    1. 把分隔符设定为‘,’;
    2. 如果有两个连续逗号,保留一个空值;
    3. 如果数值有引号,移除;
  • MISSOVER 的作用是如果数据不能填满一行的话,则全部计为空置;
  • FIRSTOBS=n可以告诉SAS从哪一行开始读取数据;

在INFILE之后,还要使用Format和Informat命令来设定数据的Format和Informat,使用Input的命令区分数据的类型,是字符型还是数字型。

例子:

  Data Test;
    NFILE "C:\User\Admin\Desktop\Learing\Sample.csv" DLM=',' DSD MISSOVER FIRSTOBS=2 LRECL=32760;
    FORMAT Personal_id $6.
           Gender      $1.
           Account     Best12.;
    INFORMAT Personal_id $6.
             Gender      $1.
             Account     Best12.;  
    Input Personal_id $
          Gender      $
          Account       ;
   Run;

导入路径下的一个csv文件,有三个变量,其中Personal_id和Gender是字符型变量,Account是数字型变量。

使用Proc Import

这个命令更多用于EXCEL文件的导入,直接看例子:

Proc Import DATAFILE = "C:\User\Admin\Desktop\Learing\Sample.xlsx"
            OUT = DATA
            DBMS = EXCEL REPLACE;
  SHEET = "SHEET1$";
  GETNAMES=YES;
  SCANTEXT=YES;
Run;
  • DATAFILE后面接文件的路径
  • OUT后面写导入的数据集的名称
  • DBMS指导入的引擎,如果是EXCEL文件,则写EXCEL REPLACE
  • SHEET 顾名思义,导入的Sheet的名字,注意名字后面要加一个$
  • GETNAMES是是否从第一列从读取变量名称;
  • SCANTEXT设置是否扫描整列,并选取最长的字节为变量的length
  • RANGE例子中没写,这里提一下 RANGE='SHEET1$A1:I12';可以实现只导入Excel文件特定的列;

3. 一些常用Functions

一些具体的用法不再赘述

字符处理类:

  • SCAN() 提取单词
  • SUBSTR()提取字符
  • UPCASE()大写
  • PROPCASE()首字母大写
  • LENGTH设定长度
  • CATX()连接字符
  • INPUT()字符型转成数字型
  • PUT()数字型转成字符型

时间类

  • Year()提取年
  • QTR()提取季度
  • Month()提取月
  • Day()提取日
  • Weekday()提取周几
  • today()今天日期值
  • mdy(m,d,y)某一天的日期值

计算类

  • Sum()求和
  • MEAN()求均值
  • MEDIAN()求中位数
  • SQRT()开平方根
  • ABS()求绝对值
  • MAX()最大值
  • LOG()对数
  • EXP()指数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容