楼主: qzuxwj138
1037 5

[原创博文] 请教一下!!! [推广有奖]

  • 0关注
  • 0粉丝

硕士生

72%

还不是VIP/贵宾

-

威望
0
论坛币
351 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
3796 点
帖子
143
精华
0
在线时间
206 小时
注册时间
2009-9-15
最后登录
2016-1-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
问题非本人原创,只是本人做不出来,发出来请教一下!!!


data A;
input acct sales;
cards;
1 23
1 33
1 54
2 32
2 34
;

数据是
1 23
1 33
1 54
2 32
2 34
需要
1 23 33
1 33 54
1 54 .
2 32 34
2 34 .
二维码

扫码加我 拉你入群

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

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

关键词:cards Input sales Data card

沙发
xiaosanmao 发表于 2009-11-5 14:14:49 |只看作者 |坛友微信交流群
data A;
input acct sales;
cards;
1 23
1 33
1 54
2 32
2 34
;run;
data b;
  retain point 1;
  if _N_ < nobs then do;
    point = point + 1;
    set a point=point nobs=nobs;
    lead= sales;
  end;
  set a end=end;
run;
proc sort data=b;by acct;run;
data b;set b;by acct;
if last.acct then lead=.;run;

使用道具

藤椅
guoluo 发表于 2009-11-5 16:26:19 |只看作者 |坛友微信交流群
PROC SORT DATA=A;
  BY acct DESCENDING sales;
RUN;

DATA B;
  SET A;
  BY acct DESCENDING sales;
  sales2=lag(sales);
  if first.acct then sales2=.;
RUN;

PROC SORT DATA=B;
  BY acct sales;
RUN;

使用道具

板凳
xiaosanmao 发表于 2009-11-5 16:49:14 |只看作者 |坛友微信交流群
楼上可以测试下面的数据
1 23
1 33
1 54
2 32
2 34
2 32

使用道具

报纸
guoluo 发表于 2009-11-5 17:09:51 |只看作者 |坛友微信交流群
可以这样

data A;
input acct sales;
count+1;
cards;
1 23
1 33
1 54
2 32
2 34
2 32
;

PROC SORT DATA=A;
  BY acct DESCENDING count;
RUN;

DATA B;
  SET A;
  BY acct DESCENDING count;
  sales2=lag(sales);
  if first.acct then sales2=.;
RUN;

PROC SORT DATA=B;
  BY count;
RUN;

data b;
  set b;
  drop count;
run;

使用道具

地板
bobguy 发表于 2009-11-8 02:42:44 |只看作者 |坛友微信交流群
Here is the one with simple logic.

1512  data need;
1513    set a end=end;
1514    by acct;
1515    n=_n_+1;
1516    if end=0 then set a (keep=sales rename=(sales=sales2)) point=n;
1517    if last.acct then sales2=.;
1518
1519
1520  run;

NOTE: There were 5 observations read from the data set WORK.A.
NOTE: The data set WORK.NEED has 5 observations and 3 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
1521
1522  proc print; run;

NOTE: There were 5 observations read from the data set WORK.NEED.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds

  Obs    acct    sales    sales2

   1       1       23       33
   2       1       33       54
   3       1       54        .
   4       2       32       34
   5       2       34        .

使用道具

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

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

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

GMT+8, 2024-4-27 22:15