楼主: 妖帝东皇
14545 5

[学习分享] SAS中input后缀@和@@的区别 [推广有奖]

  • 2关注
  • 11粉丝

已卖:1124份资源

博士生

49%

还不是VIP/贵宾

-

威望
0
论坛币
1964 个
通用积分
4.1801
学术水平
26 点
热心指数
30 点
信用等级
26 点
经验
6082 点
帖子
252
精华
0
在线时间
286 小时
注册时间
2013-8-29
最后登录
2018-4-13

楼主
妖帝东皇 发表于 2013-9-21 20:48:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
菜鸟今天才开始看the little sas book!看到下面这个程序。弄出来和大家分享一下,有什么说的不对的地方,各位大神多多指教!

在SAS中运行如下程序,查看结果。

data test;

infile cards ;

input x @;

input y;

input z @@;

cards;

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17  

;

run;

proc print;

run;

结果:

Obs x y z
1    1 2 7
2    8 9 13

我自己的体验解释:

一个data步读取数据是多个循环构成的。

一个input语句执行完之后立即换行继续下面的语句;

若在input语句之后加@,则该行以及之后的数据保留到下一个input语句开始读入数据;

若在input语句之后加@@,则该行以及之后的数据保留到下一次data步循环。


可以对比:

data test;

infile cards ;

input x @;

input y;

input z @;

cards;

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17  

;

run;

proc print;

run;

结果:

Obs x y z
1     1 2 7

以及:

data test;

infile cards ;

input x @;

input y;

input z ;

cards;

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17  

;

run;

proc print;

run;

结果:
Obs x y z
1     1 2 7


还可以添加 pull _all_ 查看变量的取值过程:


data test;

infile cards ;

put _all_;

input x @;

put _all_;

input y;

put _all_;

input z @;

put _all_;

cards;

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17   

;

run;

proc print;

run;
二维码

扫码加我 拉你入群

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

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

关键词:Input put infile little cards little 程序 记录

本帖被以下文库推荐

┏━━━━━━━━━━━━━━┓
   ☞❤学而无友必然孤陋寡闻!❤
┗━━━━━━━━━━━━━━┛

沙发
goldbaodi 发表于 2013-9-22 00:46:30
- good testing for usage of  @ and @@

- but need to add one more data line like "18 19 ..." for avoiding error (var 'z' loss data)

藤椅
ferriswu 发表于 2013-9-22 09:17:33
一个data步读取数据是多个循环构成的,读取一条观测记录就是循环一次。
这句不准确,循环一次可以读取多条raw记录,也可以读取多条data set记录,也可以输出多条data set记录。每个set, input都默认从原始数据新一行读取,除非上一个语句中有@或上一步末尾有@@。

板凳
妖帝东皇 发表于 2013-9-22 10:09:14
ferriswu 发表于 2013-9-22 09:17
一个data步读取数据是多个循环构成的,读取一条观测记录就是循环一次。
这句不准确,循环一次可以读取多条 ...
读取一行记录就是循环一次?
┏━━━━━━━━━━━━━━┓
   ☞❤学而无友必然孤陋寡闻!❤
┗━━━━━━━━━━━━━━┛

报纸
ferriswu 发表于 2013-9-22 11:05:00
妖帝东皇 发表于 2013-9-22 10:09
读取一行记录就是循环一次?
一次data步循环与读取几条记录(records)或者输出几条记录(observations)没关系。只跟使用input, set这些语句的次数和@符号使用的方法有关。

地板
songlinjl 发表于 2013-10-8 15:46:52
这个跟打算盘有何区别,只不过是一项技能。判断力更重要。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 01:29