全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1145 0
2020-11-05

TIPS

1:当output没有规定数据集名字时,把当前观测《也就是一行数据》输出到data步后面的所有数据集的末尾<注意是所有数据集>意味着纵向合并,当规定数据集名字时,把pdv当前观测输出到output规定的数据集末尾。

2:在有output语句和run语句同时存在的data步里面,pdv只会执行output的结果到正在被创建的数据集,而执行run语句的结果是pdv会清空所有的变量为缺失

3:如果一个output语句出现在程序语句中间,无论有没有被执行,后面的语句都将继续被执行,但是不会输出结果到正在被创建的输出数据集,而是会持续清空pdv中所有变量值(使用retain性质的语句除外).

4:sas中有implicit output和explicit output,在每一轮data循环后,sas会默认的将pdv中的数据写入数据集,这就是implicit output,还有一类是用户明确写的output语句,也就是explicit output,当明确规定后,隐式的output就不会再执行了。

5:output是将数据输入数据集,put是将数据输入文件或日志



*需求:输出by组的最后一行观测值并将上一行的y值输出;data a;

    input x y@@;

    cards;

    1 10 1 20 1 200 2 30 2 40

    3 50 3 60 4 70 3 80 4 400

    ;

run;


proc sort data=a;by x;run;

data res;

    set a;

    by x;

    retain rt;   *如不用retain,下面的put能输出正确的值,但是运行到run后会自动清空,这样output的结果集中rt都会为缺失值;

    if first.x then rt=0;

    if last.x then output;

    rt = y;

    put rt=;

run;

proc print data=res noobs;


结果

xyrt
120020
24030
38060
440070----------------------------------------------------------------------------------------------------------
*由一个输入数据行输出多条观测;
data a;
    input id x1-x3;
    cards;
        101 10 20 30
        102 40 50 60
    ;
run;
proc print;run;
Obsidx1x2x3
1101102030
2102405060

data b;
    set a;
    x = x1; output;
    x = x2; output;
    x = x3; output;
    output;
run;
proc print;run;
Obsidx1x2x3x
110110203010
210110203020
310110203030
410110203030
510240506040
610240506050
710240506060
810240506060

data c1 c2;*根据条件选择输出;
set sashelp.class;
if _n_ le 7 then output c1;
else output c2;
run;
proc print  data=c1;run;
ObsNameSexAgeHeightWeight
1阿尔弗雷德1469.0112.5
2爱丽丝1356.584.0
3芭芭拉1365.398.0
4凯露1462.8102.5
5亨利1463.5102.5
6詹姆斯1257.383.0
71259.884.5
proc print  data=c2;run;



ObsNameSexAgeHeightWeight
1雅妮特1562.5112.5
2杰弗瑞1362.584.0
3约翰1259.099.5
4乔伊斯1151.350.5
5茱迪1464.390.0
6罗伊斯1256.377.0
7玛丽1566.5112.0
8菲利普1672.0150.0
9罗伯特1264.8128.0
10罗纳德1567.0133.0
11托马斯1157.585.0
12威廉1566.5112.0



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群