楼主: xigailan
2068 6

[作业] SAS排序出来为缺失值 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

大专生

75%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
336 点
帖子
22
精华
0
在线时间
78 小时
注册时间
2019-12-10
最后登录
2022-12-3

楼主
xigailan 发表于 2021-12-15 15:18:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
运行前 运行后
图一为运行前,第二个为运行后。我是希望以每个出现的INDT的数据为一组,进行编号0-5.
我的代码是
data combine2;
  set combine1;
    by stkcd;
  retain t;
     IF first.j then t=1;
      else t=t+1;
run;


也试过了first.stkcd first.date 都不能得到我需要的结果。
二维码

扫码加我 拉你入群

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

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

关键词:SAS排序 缺失值 combine RETAIN First SAS

回帖推荐

Wikiko 发表于4楼  查看完整内容

问题应该出在你排序的key variables不唯一,

沙发
xigailan 发表于 2021-12-15 15:20:00
回答的亲们可以申请奖励哈,我忘了设悬赏了。。

藤椅
xigailan 发表于 2021-12-15 15:20:37
xigailan 发表于 2021-12-15 15:20
回答的亲们可以申请奖励哈,我忘了设悬赏了。。
图二为运行前哈

板凳
Wikiko 发表于 2021-12-15 15:49:10
问题应该出在你排序的key variables不唯一,
  1. data combine2;
  2. set combine1;
  3. by stkcd date;
  4. retain t;
  5. if first.stkcd then t=1;
  6. else t=t+1;
  7. run;
复制代码

报纸
xigailan 发表于 2021-12-15 16:42:50
Wikiko 发表于 2021-12-15 15:49
问题应该出在你排序的key variables不唯一,
谢谢,我之前也是过这样,只是有另一个问题,我希望是按照出现的indt生成1-6的组,这样的话 他出现了1-12(因为同一个stkcd可能出现了两次甚至多次indt)

地板
xigailan 发表于 2021-12-15 16:45:22
Wikiko 发表于 2021-12-15 15:49
问题应该出在你排序的key variables不唯一,
加了一个约束条件 可以了 谢谢!
data combine2;
set combine1;
by stkcd date;
retain t;
if first.stkcd or date1^=. then t=1;
else t=t+1;
run;

7
Wikiko 发表于 2021-12-15 17:46:12
xigailan 发表于 2021-12-15 16:42
谢谢,我之前也是过这样,只是有另一个问题,我希望是按照出现的indt生成1-6的组,这样的话 他出现了1-12 ...
那就每个stkcd每个indt按照date排序编号1-6是吧?
  1. proc sort data=combine1; by stkcd date;
  2. run;

  3. data test1;
  4. set combine1;
  5. by stkcd date;
  6. retain indt2;
  7. if indt^=. then indt2=indt;
  8. proc sort; by stkcd indt2 date;
  9. run;

  10. data test3;
  11. set test2;
  12. by  stkcd indt2 date;
  13. retain t;
  14. if first.indt2 then t=1;
  15. else t=t+1;
  16. run;
复制代码

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

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