楼主: xiaoxiahu0571
1887 4

[原创博文] 求:SAS数据整理方面 [推广有奖]

  • 0关注
  • 0粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
0
学术水平
3 点
热心指数
3 点
信用等级
1 点
经验
792 点
帖子
53
精华
0
在线时间
162 小时
注册时间
2009-10-19
最后登录
2017-1-24

楼主
xiaoxiahu0571 发表于 2010-8-23 22:15:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有如下数据集:
data a1;
input fee1-fee24 @@;
datalines;
. . . . 12 . 34 34 34 34 34 34 34 34 . . . . . . . . . .
4 . 4 . . . . . 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 65
. . . . . . . . . . . 4 4 4 4 4 . . . . . . . .
. . . . 12 . 34 34 34 34 34 34 34 34 . . . . . . . . . .
4 . 4 . . . . . 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 65
. . . . . . . . . . . 4 4 4 4 4 . . . . . . . .
;
run;



fee1-fee24是到目前为止的前24个月的交易,现在我想知道距离现在没有交易的月份数,比如第1条,fee1-fee4连续无交易,则为4,我自己也写了一个程序:
data a3;
set a1;
array fee(24) fee1-fee24;
format count $32.;
count="";
do i=1 to 23;
if fee(i)>0 then count=compress(count||"1");
else count=compress(count||"0");
end;
inc_cnt=countc(scan(count,1,1),"0");
run;


是可以实现的,感觉有点复杂

但是我尝试一下程序
%macro fee();
data a2;
set a1;
%do i=1 %to 24;
if sum(of fee1-fee&i.)>0 then
a1=&i.;
%end;
run;
%mend;
%fee;
是不对的,我自己觉得是要放stop,但是不知道改哪里放?或者加个do until啥的,怎么改这个程序,请高手指教,谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:sas数据整理 数据整理 compress format Count

沙发
soporaeternus 发表于 2010-8-23 22:31:23
  1. data b;
  2.         set a1;
  3.         array fee(24) fee1-fee24;
  4.         do i=1 to 24 by 1;
  5.                 if fee(i)>0 then do;
  6.                         inc_cnt=i-1;
  7.                         output;
  8.                         return;
  9.                 end;
  10.         end;
  11. run;
复制代码
Let them be hard, but never unjust

藤椅
xiaoxiahu0571 发表于 2010-8-25 13:34:39
2# soporaeternus


学习了 谢谢

板凳
liudeng2005 发表于 2010-8-26 14:20:33
说句实话,没看懂

报纸
idiele 发表于 2010-8-26 22:55:25
如果输入后变为含有MISSING VALUE的数据集,是不是可以用函数N()计算啊,这样好像就简单多了。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 02:44