楼主: Rock2000
1526 5

[原创博文] 怎样生成相同次数变量 [推广有奖]

  • 1关注
  • 24粉丝

已卖:6892份资源

学术权威

23%

还不是VIP/贵宾

-

威望
1
论坛币
104790 个
通用积分
51.9656
学术水平
55 点
热心指数
74 点
信用等级
48 点
经验
23510 点
帖子
520
精华
0
在线时间
10924 小时
注册时间
2004-5-27
最后登录
2025-11-12

楼主
Rock2000 发表于 2012-3-28 12:04:31 |AI写论文
10论坛币
数据如下
id        name       date                jy
0001  张三        2011-02-03     K
0001  张三        2011-02-03     Na
0001  张三        2011-02-03     Cl
0001  张三        2011-03-03     K
0001  张三        2011-03-03     Na
0001  张三        2011-03-03     Cl
0002 李四         2011-01-02    K
0002 李四         2011-01-02    Na
0002 李四         2011-04-02    Cl
0002 李四         2011-04-02    Na
要求:以ID(唯一)及Date相同者,生成次数变量(cishu),此次数变量相同,结果如下
id        name       date             cishu   jy
0001  张三        2011-02-03  1         K
0001  张三        2011-02-03  1         Na
0001  张三        2011-02-03  1        Cl
0001  张三        2011-03-03  2        K
0001  张三        2011-03-03  2        Na
0001  张三        2011-03-03  2          Cl
0002 李四         2011-01-02  1         K
0002 李四         2011-01-02  1       Na
0002 李四         2011-04-02  2       Cl
0002 李四         2011-04-02  2       Na

SAS程序怎样实现?

最佳答案

mymine 查看完整内容

data a; input id $4. name $4. date $10. jy $2.; cards; 0001张三2011-02-03K 0001张三2011-02-03Na 0001张三2011-02-03Cl 0001张三2011-03-03K 0001张三2011-03-03Na 0001张三2011-03-03Cl 0002李四2011-01-02K 0002李四2011-01-02Na 0002李四2011-04-02Cl 0002李四2011-04-02Na ; run; proc sort data=a; by id data; run; data a; set a; by id date; if first.id then cishu=1; if first.id^=1 and f ...
关键词:sas程序 date name ATE CIS

沙发
mymine 发表于 2012-3-28 12:04:32
data a;
input id $4.  name $4. date $10. jy $2.;
cards;
0001张三2011-02-03K
0001张三2011-02-03Na
0001张三2011-02-03Cl
0001张三2011-03-03K
0001张三2011-03-03Na
0001张三2011-03-03Cl
0002李四2011-01-02K
0002李四2011-01-02Na
0002李四2011-04-02Cl
0002李四2011-04-02Na
;
run;
proc sort data=a;
by id data;
run;
data a;
set a;
by id date;
if first.id then cishu=1;
if first.id^=1 and first.date then cishu+1;
run;

藤椅
pohuai1102 发表于 2012-3-28 12:14:44
用first 和last 对时间做

板凳
mymine 发表于 2012-3-28 12:40:13
data a;
input id $4.  name $4. date $10. jy $2.;
cards;
0001张三2011-02-03K
0001张三2011-02-03Na
0001张三2011-02-03Cl
0001张三2011-03-03K
0001张三2011-03-03Na
0001张三2011-03-03Cl
0002李四2011-01-02K
0002李四2011-01-02Na
0002李四2011-04-02Cl
0002李四2011-04-02Na
;
run;
proc sort data=a;
by id data;
run;
data a;
set a;
by id date;
if first.id then cishu=1;
if first.id^=1 and first.date then cishu+1;
run;

报纸
shenliang_111 发表于 2012-3-28 17:33:56
  1. data a;
  2. input id $4.  name $4. date $10. jy $2.;
  3. cards;
  4. 0001张三2011-02-03K
  5. 0001张三2011-02-03Na
  6. 0001张三2011-02-03Cl
  7. 0001张三2011-03-03K
  8. 0001张三2011-03-03Na
  9. 0001张三2011-03-03Cl
  10. 0002李四2011-01-02K
  11. 0002李四2011-01-02Na
  12. 0002李四2011-04-02Cl
  13. 0002李四2011-04-02Na
  14. ;
  15. run;
  16. data result2;
  17.   do _n_=1 by 1 until(last.id);
  18.     set a;
  19.         by id;
  20.     if _n_=1  then cishu=1;
  21.    else cishu=ifn(date=lag_date,cishu,cishu+1);
  22.    lag_date=date;
  23.    output;
  24.   end;
  25. run;
  26.   
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
Rock2000 + 1 + 5 补偿

总评分: 学术水平 + 1  热心指数 + 5   查看全部评分

地板
chendonghui1987 发表于 2012-4-10 17:07:49
就是这样做的

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

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