楼主: Actree
7954 8

[原创博文] @ 和 @@ 的用处和区别 [推广有奖]

  • 6关注
  • 2粉丝

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
2704 个
通用积分
0
学术水平
9 点
热心指数
12 点
信用等级
8 点
经验
29471 点
帖子
272
精华
0
在线时间
485 小时
注册时间
2010-11-28
最后登录
2020-6-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
虽然看过很多遍关于这个问题但还是不太明白:@ 和 @@ 的用处和区别,请高手解释清楚
二维码

扫码加我 拉你入群

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

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


回帖推荐

hopewell 发表于3楼  查看完整内容

瞎说,开个玩笑

本帖被以下文库推荐

沙发
hssnow 发表于 2011-2-4 18:34:19 |只看作者 |坛友微信交流群
看下 The Little SAS Book (4nd Edition) 的 2.12 和 2.13 吧,讲的很形象
My Blog: http:/hssnow.name/
宁静致远

使用道具

藤椅
hopewell 发表于 2011-2-5 11:12:55 |只看作者 |坛友微信交流群
瞎说,开个玩笑
  1. /*赵本山和宋丹丹有个小品,其中有一句是耗社会主义羊毛。*/
  2. /*如果我们只耗一支羊的羊毛,耗完一只再耗另一只,这就是double trailing at;*/
  3. /*如果我们不想被生产队发现,每天都换一只新的羊耗羊毛,这就是single trailing at;*/
  4. /*区别就在于每天换不换羊。*/
  5. /*如果映射到SAS中,一个input语句就是耗一把羊毛;“每天”就相当于DATA步的一次循环,也就是一个新数据行的开始。*/
  6. data single_at;
  7.     input x @;
  8.     input y;
  9. datalines;
  10. 1 2 3 4 5
  11. 6 7 8 9 10
  12. ;
  13. data double_at;
  14.     input x @@;
  15. datalines;
  16. 1 2 3 4 5
  17. 6 7 8 9 10
  18. ;
  19. /*不用trailing at的话,一只羊一天只能耗一把喽*/
  20. data not_at;
  21.     input x;
  22.     input y;
  23. datalines;
  24. 1 2 3 4 5
  25. 6 7 8 9 10
  26. ;
复制代码
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

观钓颇逾垂钓趣 种花何问看花谁

使用道具

板凳
hssnow 发表于 2011-2-5 12:10:53 |只看作者 |坛友微信交流群
3# hopewell
耗社会主义羊毛,哈哈~
My Blog: http:/hssnow.name/
宁静致远

使用道具

报纸
Actree 发表于 2011-2-5 14:39:01 |只看作者 |坛友微信交流群
在datalines内每一个row意义不同?就是说:
datalines;
1 2 3 4 5
6 7 8 9 10;
不等于
datalines;
1 2 3 4 5 6 7 8 9 10;

使用道具

地板
Actree 发表于 2011-2-5 14:39:23 |只看作者 |坛友微信交流群
我说的对不对?

使用道具

7
Actree 发表于 2011-2-5 15:28:10 |只看作者 |坛友微信交流群
data not_at2;
    input x;
    input y;
datalines;
1 2 3 4 5 6 7 8 9 10
;
proc print data=not_at2;run;

为什么proc print的result是x=1, y=6?

使用道具

8
pinseng 发表于 2011-2-6 11:42:28 |只看作者 |坛友微信交流群
@@用来读取多个观测值存贮在一行当中。比如
input age sex $ @@;
cards;
23 F  25 M  32 F
32 M  64 F  25 M
;


@也是用来hold data。但是只是暂停。当SAS回到数据顶部开始读入新的观测值的时候就释放了,不再hold。比如下例:


INPUT Type $ @;
IF Type = ’surface’ THEN DELETE;
INPUT Name $ 9-38 AMTraffic PMTraffic;


这儿的两个input。第一个input读入type,但是没有直接读进data中。而是等后面的if来判断。如果type有surface的值,第二个input就不执行。而是返回读新的observation。

@还有一个作用就是用来做pointer,@12指到第12列。

More details on <The little SAS Book >
@ compared to @@ 55
@, trailing 54-55, 244
@@, double trailing 52-53

使用道具

9
xsmyhc 发表于 2017-2-24 15:11:45 |只看作者 |坛友微信交流群
hopewell 发表于 2011-2-5 11:12
瞎说,开个玩笑
太逗了,好形象,一些就明白了

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 12:41