SAS应用 您所在的位置:网站首页 sas中infile语句 SAS应用

SAS应用

2023-03-26 03:43| 来源: 网络整理| 查看: 265

以下内容包括:

建立数据集 手动输入数据(复制粘贴) 从csv(推荐),txt,xls及其它格式输入 Format的使用 (1)读取并建立新数据集 sas 分号; 为语句的结尾,一般空格,tab,换行不影响语句的执行,可按照自己喜好对齐.但是建议语句不要太长不换行,以不要拖动左右滚动条为准. data步以data libname.dsn开头,run结尾.

以下程序将读取C:\Users\user\Desktop\study\test.sas7bdat的所有数据并保存在work.one里,sas7bdat为sas数据集的默认格式.

* ' /*xxx*/ '和 '*xxx; '为SAS中的注释,程序中不会被执行.多写注释是好习惯; libname study "C:\Users\user\Desktop\study"; *建立逻辑库study,路径为桌面study文件夹; data one; *建立临时数据集 one; set study.test; /*假设下载了数据集test.sas7bdat放在study文件夹里; 等同于set "C:\Users\user\Desktop\study\test.sas7bdat"; */ run; 数据集名称规则: 名称可包含下划线,字母,数字,但必须以下划线或字母开头,不能有空格(一般用下划线代替,如dataset_name); 最长为32个字节,旧版可能为8字节; 变量名和数据集名最好为便于理解的英文缩写,不要拼音缩写! 实在要用抽象名称最好在程序开头注释! (2)手动输入数据 data work.one; input treat$ sex sbp_after sbp_before; datalines; med1 1 133 160 med2 2 140 161 placebo 1 163 161 placebo 2 155 160 ; run;

*input后定义变量名,默认变量为数值, 变量名带$表示其变量为字符; *变量名之间和$左右随意空格; *从datalines; 的下一行开始读取数据到 ; 结束;

查看数据 proc print data=one; var treat sex sbp_after sbp_before; *选择查看的变量,这行可以不写,默认为全部变量; run; image.png 个人更建议在explorer栏打开逻辑库直接看,只要记得看完关闭viewtable;反正都没有输出 (3)其它文件输入数据 1.csv文件

同样以上述数据为例,csv格式为

image.png data test; infile "C:\Users\zhangqing\Desktop\test.csv" /*此处为文件位置全路径*/ firstobs=2 /*第一行为变量名,所以从第二行开始读取数据*/ obs=4 /*读四行,可省略*/ dsd ; /*分隔符为逗号,为csv默认格式*/ input treat$ sex sbp_after sbp_before; /*选择需要的数据*/ run;

此处要注意的是firstobs和dsd为infile的参数,所以一直到dsd才有分号; input中变量名可以自己取,sas默认从左往右读取. 如代码的sex换成gender,那么sas中1212对应的的变量名会是gender. input的数据类型必须一致.如treat下方的med1等含非数字,所以需要在treat后加上$来读取. 检查完以上几点读取数据仍然有问题并且日志没报错,请检查文件名或变量名是否正确,输出同理.

2.txt文件

txt文件一般由csv转换而来(指直接改后缀,分隔符仍为逗号),可使用同样代码 如果txt分隔符为制表符,上述代码中dsd换成dlm='09'x

注意: 对于txt文件dlm="指定分隔符" 当数据有空(缺失)时会跳过读取下一个 例如 a, ,1,2 四个变量第二个值缺失,在读取时为会直接跳过空格或空值,所以需用"."取代空数据; 读取csv时会自动用"."取代缺失值 3.xls,xlsx等其它文件

直接选File-import Data,使用import wizard. import wizard会根据选项生成proc import的代码,复制代码即可 代码如下

PROC IMPORT OUT= work.test /*sas数据集*/ DATAFILE= "C:\Users\user\Desktop\test.xls" /*文件全路径*/ DBMS=EXCEL REPLACE; RANGE="Sheet1$"; /*表名称*/ GETNAMES=YES; /*第一行有变量名选yes*/ MIXED=NO; SCANTEXT=YES; USEDATE=YES; SCANTIME=YES; RUN; (4)Format的使用 1.format的建立

proc format; value 标签名 变量值1="标签1"; 标签名别忘了$ 注意data步中标签载入要在数据输入之前 变量值可为数字,数值范围,字符,缺失值(".");可用high,low,other表示范围

代码如下

proc format; value gender 1="1.male" 2="2.female"; value bp 140-high="high" 135-140="mid-high" other="mid"; value $ treatment "med1"="HCTZ"; data work.one; format sex gender. sbp_after bp. sbp_before bp. treat $treatment.; input treat$ sex sbp_after sbp_before; datalines; med1 1 133 160 med2 2 140 161 placebo 1 163 161 placebo 2 155 160 ; run;

结果

image.png 2.format的保存与读取

SAS中带format的数据集如果缺失format文件或版本不对会打不开 format每次加载了才能使用,可通过fmtsearch()或数据集加载

方法一:直接舍弃format,免除后顾之忧 option nofmterr; 方法二:保存format文件 proc format library=libname; /*将format保存在libname指定文件夹里,并生成format数据集*/ value xxx; run;

下次使用时可读取已经保存在libname中的format,记得加载libname的路径 传数据时整个文件夹打包带走,只能给同版本sas使用

option fmtsearch(libname); 方法三:生成数据集-传输-读取

format已加载并暂时保存work里,cntlout输出相应永久数据集到libname的文件夹

proc format library=work cntlout=libname.format; run;

拷贝传输数据集format,重新加载到另一台电脑里

proc format library=work cntlin=libname.format; run;

同样记得加载libname的路径



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有