楼主: chaoren2010
27378 15

SAS9.2 中first. last. 的使用求助 [推广有奖]

  • 0关注
  • 0粉丝

博士生

65%

还不是VIP/贵宾

-

威望
0
论坛币
533 个
通用积分
6.0218
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
3168 点
帖子
431
精华
0
在线时间
160 小时
注册时间
2011-4-10
最后登录
2024-3-21

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

我想将数据库(按变量var4排序)中每个var4取值的记录中的第一条删除,建立一个新的数据集,在运行以下程序后,SAS 日志中提示:
“NOTE: 变量 first.var4 未初始化。
   NOTE: 有 1331 个从数据集 WORK.TRIAL 读取的观测。
   NOTE: 数据集 WORK.TRIAL2 有 1331 个观测和 35 个变量。
   NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒”
请问这是什么原因,是程序编写有错误还是软件或其他问题?请高手指点。

程序如下:
data trial2;
set trial;
if first.var4 then delete;
run;

二维码

扫码加我 拉你入群

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

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

关键词:First Last FIRS SAS9 FIR 程序编写 数据库 记录 软件

回帖推荐

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

要想用first.variable,首先要有by语句,并且by后面必须要包括这个variable,不过这个变量不一定非要排序,可以用 notsorted 选项。 如:

本帖被以下文库推荐

沙发
semenljw 在职认证  发表于 2012-7-18 17:02:02 |只看作者 |坛友微信交流群
在用first和last变量之前要根据前面的var4排序的,你排序了吗?

使用道具

藤椅
YueweiLiu 发表于 2012-7-18 18:08:52 |只看作者 |坛友微信交流群
要想用first.variable,首先要有by语句,并且by后面必须要包括这个variable,不过这个变量不一定非要排序,可以用 notsorted 选项。

如:
  1. data have;
  2.         input num value;
  3. cards;
  4. 1 2
  5. 1 5
  6. 2 2
  7. 2 3
  8. 3 4
  9. 1 5
  10. 1 3
  11. ;

  12. data want;
  13.         set have;
  14.         by num notsorted;
  15.         if first.num then delete;
  16. run;
复制代码
已有 2 人评分经验 论坛币 热心指数 收起 理由
bakoll + 3 + 3 精彩帖子
李会超 + 80 + 1 精彩帖子

总评分: 经验 + 83  论坛币 + 3  热心指数 + 1   查看全部评分

使用道具

板凳
chaoren2010 发表于 2012-7-18 19:14:17 |只看作者 |坛友微信交流群
谢谢楼上老师的指点!

使用道具

报纸
YueweiLiu 发表于 2012-7-18 20:26:59 |只看作者 |坛友微信交流群
chaoren2010 发表于 2012-7-18 19:14
谢谢楼上老师的指点!
言重啊,我不是老师。。
已有 1 人评分论坛币 收起 理由
iiooiookoo + 5 精彩帖子

总评分: 论坛币 + 5   查看全部评分

使用道具

地板
chendonghui1987 发表于 2012-7-19 11:29:21 |只看作者 |坛友微信交流群
看来楼主没有排序

使用道具

7
lynette_89 发表于 2012-7-19 22:02:57 |只看作者 |坛友微信交流群
OK.
Let me try to solve it.

That is:
*** sort data ***;
proc sort data=trial out=trial_1;
    by var4;
run;

*** set by sorted var ***;
data trial_2;
    set trial_1;
    by var4;
    if not first.var4;
run;

"Delete" seems to be some kind of hard-coding, so I recommend to use method shown above.

Hope it helped you~

Best regards~

使用道具

8
chaoren2010 发表于 2012-7-28 12:12:11 |只看作者 |坛友微信交流群
lynette_89 发表于 2012-7-19 22:02
OK.
Let me try to solve it.
Thank you very much for your help. I'd like to know what does 'hard-coding' mean? And what's the difference between “if not first.var4” and “if first.var4 then delete”? Thank you.

使用道具

9
lynette_89 发表于 2012-7-28 15:30:47 |只看作者 |坛友微信交流群
chaoren2010 发表于 2012-7-28 12:12
Thank you very much for your help. I'd like to know what does 'hard-coding' mean? And what's the d ...
OK.
Let me try to make myself clear.
What I mean is you can choose some obs from a certain set, but you'd better not to use dellete,update ect. It seems to be you change the original data by your will.
And hard-coding means you do sth without enough support by logical or statistical provement.
eg, if a=1 then b=3;
but you can't supply the logical relationship between them, then that's kind of hard-coding.
But all that above is my own opinion.
May it helps you~

使用道具

10
chaoren2010 发表于 2012-7-29 18:06:27 |只看作者 |坛友微信交流群
lynette_89 发表于 2012-7-28 15:30
OK.
Let me try to make myself clear.
What I mean is you can choose some obs from a certain set ...
Thank you indeed for your excellent explanation.

使用道具

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

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

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

GMT+8, 2024-4-27 17:56