楼主: dyi96
361 4

[技术讨论与投票] 请大神解析这段code [推广有奖]

  • 0关注
  • 0粉丝

大专生

56%

还不是VIP/贵宾

-

威望
0
论坛币
2006 个
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
1289 点
帖子
40
精华
0
在线时间
30 小时
注册时间
2017-6-4
最后登录
2017-9-25

dyi96 在职认证  发表于 2017-6-18 17:39:33 |显示全部楼层
sas帮助里这段code:data employee;   input ssn 1-9 #3 w2amt 1-6;   if w2amt=. then list;   datalines;23456789JAMES SMITH356.79345671234Jeffrey Thomas.;生成的table数据如下:ssn         w2amt456789     356.79345671234       .
log窗口list输出的内容如下:RULE:      ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+--1001       3456712341002       Jeffrey Thomas1003
问题:(1)input语句里,#3是跳3行读取的意思?(2)log窗口输出了Jeffray Thomas怎么解释?多谢多谢。




关键词:code COD ODE Employee Jeffrey

支持楼主:购买VIP购买贵宾 购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
 
载入中......
stata SPSS
dyi96 在职认证  发表于 2017-6-18 17:40:27 |显示全部楼层
糟了,排版全乱了。
回复

使用道具 举报

dyi96 在职认证  发表于 2017-6-18 17:44:52 |显示全部楼层
本帖最后由 dyi96 于 2017-6-18 17:54 编辑

sas帮助里这段code

data employee;

   input ssn 1-9 #3 w2amt 1-6;

   if w2amt=. then list;

   datalines;

23456789

JAMES SMITH

356.79

345671234

Jeffrey Thomas

.

;

生成的table数据如下:

ssn              w2amt

23456789     356.79

345671234           .


log窗口list输出的内容如下:RULE:      ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+--

1001       345671234

1002       Jeffrey Thomas

1003


问题:

1input语句里,#3是跳3行读取的意思?

2log窗口输出了JeffrayThomas怎么解释?

多谢多谢。


回复

使用道具 举报

sqlai 发表于 2017-6-18 20:57:39 |显示全部楼层
input语句,相当于将 原始数据的顺序,进行了重新设计,并告诉sas按照什么样的顺序才算是读取了一条记录。

1、 先读取ssn 位置1-9
2、往下移动到第3行
3、读取w2amt 位置1-6

做完上面3步骤,sas才认为读完了一条记录。

以此类推,第2条记录就是:
1、从第4行开始读取ssn
2、往下移到第3行
3、读取w2amt,这里为缺失值(.)

在读第二条记录时,sas发现w2amt=.,不满足if条件,因此把这条记录所包含的原始数据记录都list出来。
已有 1 人评分经验 论坛币 收起 理由
admin_kefu + 40 + 20 热心帮助其他会员

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

回复

使用道具 举报

dyi96 在职认证  发表于 2017-6-19 01:35:39 |显示全部楼层
本帖最后由 dyi96 于 2017-6-19 01:36 编辑

多谢多谢。我以为list语句只是list出ssn,w2amt的值。原来是list出PDV里所有原始数据。
回复

使用道具 举报

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

GMT+8, 2017-12-14 12:31