SAS笔记

1. cards与datalines
Cards语句与datalines语句可以通用。
如果输入数据中含有分号,可用cards4语句或datalines4语句,同时,数据结尾用4个分号表示数据输入结束。
Cards4例
data;
  input number citation $50.;
  cards4;
1 Berry
2  LIN ET AL., 1995; BRADY, 1993
3  BERG, 1990; ROA, 1994; WILLIAMS, 1992
;;;;
run;
2. Transpose
用过SPSS的人都知道,SPSS的数据转置功能还是很强大的,而且很直观,那么SAS呢?想必SAS那么强大的统计软件也不会落后的。
    TRANSPOSE这个功能就可以完成转置功能。TRANSPOSE过程将一个数据集进行转置,使行变为列而列变为行,也就是使原数据集中样品的观测值变换成新数据集中变量的观测值,而原数据集中变量的观测值则变换成新数据集中样品的观测值。
TRANSPOSE过程的格式如下所示:
PROC TRANSPOSE <DATA=input-data-set> <LET> <NAME=name> <OUT=output-data-set> <PREFIX=prefix>;
  BY <DESCENDING> variable-1 <...<DESCENDING> variable-n> <NOTSORTED>;
  COPY variable(s);
  ID variable;
  IDLABEL variable;
  VAR variable(s);
在PROC TRANSPOSE语句中可能出现的选择项有:
    1)DATA=数据集名,用来说明要转置的数据集名,如果省略这一选择,则指定最新建立的数据集。
    2)OUT=数据集名,用来说明转置所建立的新数据集名,如果省略这一选择,SAS将按内部程式给出新的数据集名。
    3)LET 当ID出现重复时,那么只选用最后一条
    4)NAME=字母  为含有输入数据集中被转置的变量名的输出数据集中的变量命名,如果省略这一选择,SAS将按内部程式指定为_NAME_。
    5)PREFIX=字母(指定一个前缀,用来构成新变量名)。
BY语句 使输入数据集分组转置,分组变量被包括在输出数据集中。
COPY语句 将变量复制到新的数据集中。
ID语句 用来指定转置后的变量名
IDLABEL语句 为转置后的变量名添加标签
VAR语句中应列出要被转置的变量名,否则原数据集中未在其他语句中列出的所有数值型变量都将被转置,字符型变量必须在VAR语句中列出才能被转置,未被转置的变量不进入新的数据集,除非它们已列入COPY或BY语句。公司注册资本登记制度改革
示例1:
data score;
  input Student $9. +1 StudentID $ Section $ Test1 Test2 Final;
  datalines;
Capalleti 0545 1  94 91 87
Dubose    1252 2  51 65 91
Engles    1167 1  95 97 97
Grant    1230 2  63 75 80
Krupski  2527 2  80 76 71
Lundsford 4860 1  92 40 86
McBane    0674 1  75 78 72
;
proc transpose data=score out=idlabel name=Test prefix=sn;
  id studentid;
  idlabel student;
run;
proc print data=idlabel label noobs;
  title 'Student Test Scores';
run;
输出OUTPUT:
----------------------------------------------------
以前的变量名  Capalleti  Dubose  Engles  Grant  Krupski  Lundsford    McBane
  Test1          94        51      95      63      80        92      75
  Test2          91        65      97      75      76        40      78
  Final          87        91      97      80      71        86      72
示例2:
data sale;
input salerid foodid money foodname $;
cards;
1 1 100 egg
1 2 300 cake
1 3 400 apple
2 2 230 cake
2 3 444 apple
2 4 540 pear
3 1 123 egg
3 2 120 cake
3 3 200 apple哈尔滨体育学院学报
3 4 500 pear
;
run;
proc transpose data=sale out=saleout name=Saler prefix=Food;
  id foodid;
  idlabel foodname;
  by salerid;
run;
proc print data=saleout label noobs;
run;
输出OUTPUT:
----------------------------------------------------
salerid    以前的变量名    egg    cake    apple    pear
  1          money        100    300    400        .
  2          money          .    230    444      540
  3          money        123    120    200      500
3. SAS对宏引用符号&、&&、&&&、&&&&的处理机制
SAS中通过&name引用一个宏变量name的值,但在实际编程中经常碰到诸如&&name&i甚至&&&的情况,初学者很容易被其迷惑,不过在了解SAS宏处理机制后,这个问题不难理解。例:
宏变量名  宏变量值
i  1
location  beijing
name1  shanghai
name  location
SAS宏处理器在读到SAS代码中的&时,会:
1、  向后继续读一个字符;
失依儿童2、  如果后面的字符也为&,则宏处理器将读到的两个&&并做一个&看待,然后转到步骤1;
3、  否则,将后面连续的非&字符(直到空格或&)做为宏变量名字符串。
新三国穿帮  对于&&name&i,解析流程如下:
计委大院&&name&i  ——>  (&&)name(&i)  ——>  &name1  ——>  shanghai
  对于&&&name,解析流程为:
&&&name  ——>  (&&)(&name)  ——>  &location  ——>  beijing
  对于&&&&name,解析流程为:
&&&&name  ——>  (&&)(&&)name  ——>  &&name  ——>  (&&)name  ——>  &name 
——>  location
4. Frist 与 last的组合使用
SAS环境里面,会使用firstlast指令是很方便的事情。
因为常常会遇到要取次数、取第一笔数据、取最后一笔数据等问题,很难用SPSS去完成这样的动作科利华电脑家庭教师(SPSS程序语言的人很少)
今天要介绍的这两指令的基本款使用:

本文发布于:2024-09-22 04:38:20,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/505560.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   转置   集中   变量   语句   变量名
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议