【SAS BASE】处理数据集

本节内容包括:SET语句、MERGE语句、UPDATA语句、OUTPUT语句、TRANSPOSE语句和data-set选项及SAS Automatic Variables

一、SET语句(堆叠功能)

  • 用SET语句修改数据集
DATA Friday;
    SET Sales;/SET ‘C:\MySASLIB\trains.dat‘;
    IF DAY=‘F‘;
    Total=Propcorn+peanuts;/*建立新的变量*/
RUN;
  • 用SET语句堆叠(stack)数据
1 DATA BOTH;
2     SET Southerntrance Northerntrance;
3 RUN;
  • 用SET语句Interleaving数据集:不仅堆叠在一起,还按照BY变量排序
1 DATA interleave;
2    SET Northerntrance Southerntrance;
3    BY passnumber;
4 RUN;
5 /*注意:用于堆叠的数据集必须要预先根据BY变量排序*/
  • Combing a Grand Total with the Original Data

     1 *省略DATA步;
     2 PROC MEANS NOPRINT DATA=shoes;
     3     VAR Sales;
     4     OUTPUT OUT=Summarydata SUM(Sales)=GrandTotal;
     5 /*MEANS过程生成一个含有总和的新数据集,但是无法与原始数据匹配,因为没有共同的变量*/
     6 PROC PRINT DATA=Summarydata;
     7     TITLE ‘Summary Data Set‘;
     8 RUN;
     9
    10 *Combing a GrandTotal with the original data;
    11 DATA Shoesummary;
    12     IF _N_=1 THEN SET Summarydata;/*Summarydata数据集观测数为1*/
    13      SET shoes;/*原始数据的观测数超过1*/
    14      PERCENT=sales/Grandtotal*100;
    15 RUN;
    16 /*与RETAIN语句的效果类似*/

二、MERGE语句(匹配功能)

  • One to One Match Merge

    1 DATA Cholocates;
    2     MERGE sales descriptions;
    3     BY codenum;
    4 RUN;
    5 【NOTICE】:
    6 1.在MERGE之前要预先按BY变量排序;
    7 2.若两个数据集有相同名字的非BY变量,则后面的会覆盖前面数据集。
  • One to Many Match Merge(用data-set-1的一个观测时匹配data-set-2的多个观测,原理与One-to-One一样)
  • Mering Summary Statistics with the Original Data

    1 step1: 利用PROC MEANS归纳数据,并将输出放入新数据集中;
    2 step2: 将新数据集与原始数据集匹配。

     

三、Data-set Options(最常用的帮助处理数据集的选项)

1 KEEP=variable-list;
2 DROP=variable-list;
3 RENAME=(oldvar=newvar);
4 FIRSTOBS=n;
5 OBS=n;
6 LABEL=‘data-set-label’;
7 IN=new-var-name;*creating a temporary variable for tracking whether that data set contributed to the current observation;
8 WHERE=condition;

【备注】:IN=variable为临时变量,仅在当前DATA步存在,值为0或1。

四、用UPDATE语句更新主数据集

1 DATA perm.patientmaster;
2     UPDATE perm.patientmaster transactions;
3   *解释:---------主数据集-----------更新数据集---;
4     BY Account;
5 RUN;
6 【NOTICE】:
7 更新数据集的缺失值不会覆盖前一个主数据集;
8 主数据集中的BY变量的值必须是unique;

五、OUTPUT语句

  • 将一个数据集横向分为多个数据集(若仅用DATA步,(例如:DATA Lions Tigers Bears;),导出来的数据集是一样的)
1 DATA Moring Afternoon;
2     INFILE ‘C":\MyRawdata\zoo.dat‘;
3     INPUT Animal $ 1-9 Class $ 11-18 Enclosure $ Feedtime $;
4    *省去数据部分;
5    IF FeedTime=‘am‘ THEN OUTPUT Moring;
6         ELSE IF Feedtime=‘pm‘ THEN OUTPUT Afternoon;
7         ELSE IF Feedtime=‘both‘ THEN OUTPUT;/*输入到两个数据集中*/
8 RUN;
  • 将一个数据集的一行观测分为多个
 1 DATA Theaters;
 2     INFILE ‘C:\MyRawData\movies.dat‘;
 3      INPUT Month $ Location $ Tickets @;
 4      OUTPUT;
 5      INPUT Location $ Tickets @;/*因为没有遇到第二个input语句,此时Month还停留在上一句的Month处*/
 6       OUTPUT;
 7       INPUT Location $ Tickets;
 8       OUTPUT;
 9 RUN;
10 /*此program将每个观测(7列),拆成三行(每行三列,且没三行都以第一行的Month的值为准)*/

六、TRANSPOSE语句(将观测与变量互换)

1 PROC TRANSPOSE DATA=baseball OUT=flipped;
2     BY Team Player;/*Grouping variable*/
3     ID type;/*ID 语句names the variable whose formatted values will become the new variable names;若为数值型的,则新变量名会有一个下划线前缀;ID变量的值必须是Unique*/
4     VAR Entry;/*想要transpose的变量*/
5 RUN‘

七、SAS Automatic Variables

1) _N_ :DATA步中SAS的循环次数;
2)_ERROR_:取值0(无错误)和1(有错误);
3)FIRST.variable:当SAS在读取该变量时,首次出现一个value,则为1,否则为0;
    LAST.variable:当SAS在读取该变量时,最后出现一个value,则为1,否则为0;
【注意】:FIRST.variable和LAST.variable:仅在DATA步中用了BY语句才有些。

【SAS BASE】处理数据集,布布扣,bubuko.com

时间: 2024-10-06 00:43:12

【SAS BASE】处理数据集的相关文章

【SAS BASE】PROC EXPORT

PROC EXPORT可导出两种类型的文件: 导出delimited文件 1 *例子; 2 PROC EXPORT DATA=hotels 3 OUTFILE='C:\MyRawData\Hotels.txt' /*后缀名决定了输出文件的格式,除此之外,额也可以通过DBMS=选项来指定.*/ 4 /*例如:space-delimited文件时没有标准的后缀名的,只能通过DBMS=选项来输出*/ 5 DBMS=DLM /*若输出CSV文件,则DBMS=CSV; 6 若输出txt文件,则DBMS=T

【SAS BASE】ODS OUTPUT

一.ODS的基本性质 ODS输出格式:LISTING(默认的标准SAS输出).HTML.RTF.PRTNTER.PS.PCL.PDF.OUTPUT(SAS OUTPUT Date-set).MARKUP.DOCUMENT; ODS内有table template(指定输出结构)和style template(指定外观结构):首先通过table template作用从procedure中产生数据,形成output project,然后经过style template作用送到destination加

【SAS BASE】利用FILE语句和PUT语句输出简单报告

1 DATA _NULL; /*_NULL_使得系统不需要生成一个新的数据集,以节省内存*/ 2 INFILE 'C:\MYRAWDATA\Candy.dat'; 3 INPUT Name $ 1-11 class @15 DateReturned MMDDYY10. Candytype $ Quantity; 4 Profit=Quantity*1.25; 5 6 /*重点:利用FILE和PUT输出报告*/ 7 FILE 'C:\Myrawdata\student.txt' PRINT; /*

【SAS BASE】Debuging SAS Programs

SAS Program的错误主要有三类: Programing Logic Errors(How to identify and resolve); Syntax errors(How to recogize anc correct); Data errors(How to examine and resolve. 如何写一个高效的SAS Program: 尽可能写易读的代码:(每一句话一行.使用缩进排版方式.多使用注释) 测试Program的任意一个部分 用小数据集测试Program(例如用O

【SAS BASE】PROC SORT

1 PROC SORT DATA=data-set 2 OUT=neat 3 NODUPKEY 4 DUPOUT=extraobs; 5 BY variable-1 variable-2 ... variable-n; 6 RUN; 备注: 若不指定OUT=,则自动将排序后的数据代替原有数据集: NODUPKEY选项命令SAS 对BY语句中的变量删去重复观测值: DUPOUT=选项命令SAS将删去的数据放入其后指定的数据集中: 排序顺序(ASCII):blanks<-numericals(缺失值

【SAS BASE】PROC CONTENTS与LABEL

CONTENTS过程(查看数据集的属性) 1 PROC CONTENTS DATA=data-set; 2 RUN; LABEL 1 /*LABEL分为两种,但均不能超过256个字符*/ 2 LABEL=data-set (给数据集定义一个Label) 3 LABEL statement (赋予每个变量一个label) 4 5 /*对于变量来说,如果在DATA布中采用LABEL语句,则变量的描述会存储在数据集中,并在PROC CONTENTS中打印出来: 6 而若在PROC中采用,将不会存储在数

【SAS BASE】PROC REPORT

PROC REPORT包含了PRINT.MEANS.TABULATE.SORT过程和DATA步的功能: 一.基本语法: 1 DATA natparks; 2 INFILE 'C:\MyRawdata\parks.dat'; 3 INPUT Name $ 1-21 Type $ Region $ Museums Camping; 4 RUN; 5 6 /*-----Group and Across Variables(Group:纵向;Across:横向)---*/ 7 *Region as Gr

【SAS BASE】PROC TABULATE(输出更加精美的tabulate报告)

PROC TABULATE的一般形式:(主语与FREQ过程不同,这里是table 语句,不是tables) 1 PROC TABULATE FORMAT=options;/*FORMAT=选项改变table中所有cell的格式*/ 2 VAR analysis-variable-list; 3 CLASS classification-variable-list;/*在下面table语句中出现的变量必须预先在VAR语句或CLASS出现过*/ 4 TABLE page-dimension, row

【SAS BASE】PROC FREQ

一般形式: 1 PROC FREQ; 2 TABLES variable_combinations/options; 3 /*variable_combinations 4 若为单变量:TABLE variable-name; 5 若为多变量: TABLE variable-name-1 variable-name-2 ...; 6 若为交叉变量:TABLES variable-name-1*variable-name-2; 7 */ 常见的options有: 1 LIST:将cross-tab