如何查看数据集属性?选择合适的服务器是开始项目的第一步

在开始项目编程之前,一般都要为SAS选择服务器,一般有两种:一种是英文服务器,另一种是中文服务器。如果选择错了,那么在打开数据集的时候,会出现乱码。

那么是选择英文的还是中文的呢?一般我们根据raw.dm这个数据集判断。(可能每个公司存放原始数据集的库名不一样)。dm这个数据集是直接从DM部门那边发过来的,并不是我们处理过后写的DM域输出的数据集。

换句话说就是查看数据集的编码,一般我们可以通过proc contents查看

proc contents data=raw.dm;

run;

可以看到数据集的编码采用的utf-8形式,也就是英文服务器。

然后今天在看《深入解析SAS》这本书的时候,又学到了一种查看编码的方法,就是用attrc函数。

%let dsid=%sysfunc(open(raw.dm,i));

%put %sysfunc(attrc(&dsid,encoding));

一开始我以为"i"这个参数是不区分大小写的意思,可是在SAShelp文档搜索attrc函数的时候,顺便看了一下open函数,才知道这个"i"的意思是“以INPUT模式(默认)打开数据集。值可以读取,但不能修改。“I”使用引擎中最强的访问模式,也就是说,如果引擎支持随机访问,OPEN默认为随机访问。否则,文件将自动以“in”模式打开。以顺序访问方式打开文件,并设置系统级警告。”(来自SAShelp文档)

open函数的作用是打开一个数据集,至于为什么要打开,我目前在网上还没看到,也没特别去搜。

接下来具体介绍attrc函数,根据SAShelp文档解释:

语法格式是:

ATTRC(data-set-id,attribute-name)

data-set-id:指定OPEN函数返回的数据集标识符。(讲的有点抽象)

attribute-name:有下面这些选项,具体可看SAShelp文档。

看一个具体的例子:

data cc;

   dsid=open("sashelp.classfit", "i");

   charset=attrc(dsid, "CHARSET");

   if charset = "" then

      put "Data set has not been sorted.";

   else put "Data set sorted with " charset 

            "character set.";

   rc=close(dsid);

run;

同时可以看到数据集中各变量返回的值。

CHARSET这个参数就是判断数据集中的字符是由什么编码组成的,

charset=attrc(dsid, "CHARSET");这句话的作用就是通过attrc函数将得到的值赋给charset,然后才有下面那段判断是否为空的句子。

总结:proc contents较常用,attrc函数就当拓展知识面。

你可能感兴趣的:(如何查看数据集属性?选择合适的服务器是开始项目的第一步)