分享

sas中open函数

 wenasunny 2016-11-24
对于某个指定的数据集,我们有时需要
1.对数据集而言,获取该数据集的整体性质(数值参数或字符参数:创建日期crdte,数据集标签label,总观测条数nobs,总变量个数nvar或nvars等);
2.对数据集中的第i个变量而言,获取该变量的个体性质(名字varname,变量类型vartype,变量标签varlabel,变量输入格式varinfmt,输出格式varfmt,变量长度varlen,变量的指定观测值getvarc或getvarn等)。

可以通过直接打开数据集的方式查看有关信息。

下面介绍的另一种方法是在没有直接打开数据集的情况下利用open函数获取信息。
1.id=open("数据集名");
其中数据集名为全称—"逻辑库名.数据集名"的形式。倘若省略逻辑库名,默认逻辑库为work。双引号也能换做单引号。
open函数用来“打开”一个数据集,其返回的id可以看做是该数据集的“代号”,以后引用该“代号”达到引用该数据集的目的。这一步是下面步骤的绝对前提,即在进行下面操作时必须进行open操作。
2(i).获取整体性质。
对于数值性质,用attrn: variable=attrn(id,'数值参数');
其中数值参数可以为上面提到的crdte、nobs、nvar(s);
对于字符性质,用attrc: variable=attrn(id,'字符参数');
其中字符参数可以为上面提到的label。
2(ii).获取第i个变量的个体性质。
假设i已经取值,那么格式为:
variable=varname(id,i)---获取名字,字符型variable长度为200,输入输出格式均为$200.
variable=vartype(id,i)---获取类型,字符型variable长度为200,输入输出格式均为$200.,取'N'或'C'
variable=varlabel(id,i)---获取标签,字符型variable长度为200,输入输出格式均为$200.;
variable=varinfmt(id,i)---获取输入格式,字符型variable长度为200,输入输出格式均为$200.;
variable=varfmt(id,i)---获取输出格式,字符型variable长度为200,输入输出格式均为$200.;
variable=varlen(id,i)---获取变量长度,数值型variable长度为8,输入格式为12.;输出格式为best12.;

value=getvarn(id,i)---获取第i个变量的首行值,且第i个变量必须为数值型;
value=getvarc(id,i)---获取第i个变量的首行值,且第i个变量必须为字符型。
有时候需要定位到第k行,获得第k行的值,可以配合fetchobs函数使用:l=fetchobs(id,k)。

另外可能知道变量名(如变量math)而不知道该变量的位置,可以用函数i=varnum(id,'math')获得math的位置。
3.获取信息完毕后需要用close“关闭”数据集:h=close(id)。

例:先建立名为m的数据集,数据集中只含有一个变量x,包含100个服从(5,10)均匀分布的随机数。利用fetchobs以及getvarn函数获得x的第10个观测值。

data m(keep=x);
do i= 1 to 100;
x=5+5*ranuni(1);
output;
end;
run;
data _null_;
id=open('m');
k=fetchobs(id,10);
value=getvarn(id,1);
put 'The tenth value of x is ' value;
h=close(id);
run;
运行程序得到log:
The tenth value of x is 5.332832758

以上方法并非得到第10行值的唯一方法,这里只是提供了一个可行思路,实际上本文提及的函数应用广泛,以后的文章中或有涉及。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多