楼主: yunnandlg
1197 0

[学习分享] output语句 [推广有奖]

版主

但问耕耘,莫问收获

已卖:3032份资源

院士

5%

还不是VIP/贵宾

-

威望
0
论坛币
279367 个
通用积分
649.6470
学术水平
1667 点
热心指数
1686 点
信用等级
1650 点
经验
192122 点
帖子
1938
精华
0
在线时间
2780 小时
注册时间
2010-8-28
最后登录
2025-12-23

楼主
yunnandlg 在职认证  学生认证  发表于 2020-11-5 23:39:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

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



二维码

扫码加我 拉你入群

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

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

关键词:output outpu put语句 Out put

Cause morning rolls around and it's another day of sun.
清晨不久就会来到,又是阳光明媚的一天。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 12:11