楼主: Laughing06
7467 10

关于SAS中添加观测值的问题 [推广有奖]

  • 4关注
  • 0粉丝

大专生

65%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
499 点
帖子
37
精华
0
在线时间
51 小时
注册时间
2013-3-13
最后登录
2016-5-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
原数据集如下:
name   visit   date                value
aaa       N1    20081225       111
aaa       N2    20081225       121
aaa       N1    20090122       112
aaa       N2    20090122       122
aaa       N1    20090416       113
aaa       N2    20090416       123
aaa       N3    20090416       133
可以看到,相同颜色的为同一次visit, 但是红色部分有三个N(N1 N2 N3), 所有我希望在前两次visit中也产生一行观测值=N3, date=N2的时间,value=空 就可以。即结果希望如下:
name   visit   date                value
aaa       N1    20081225       111
aaa       N2    20081225       121
aaa       N3    20081225       
aaa       N1    20090122       112
aaa       N2    20090122       122
aaa       N3    20090122      
aaa       N1    20090416       113
aaa       N2    20090416       123
aaa       N3    20090416       133
不知哪位仁兄能帮忙解答一下?谢谢!

二维码

扫码加我 拉你入群

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

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

关键词:观测值 Visit value visi date visit

沙发
zhengbo8 发表于 2014-6-3 17:02:11 |只看作者 |坛友微信交流群
  1. data test;
  2.         input name $  
  3.           visit $  
  4.           date $  
  5.           value;
  6. datalines;
  7. aaa       N1    20081225       111
  8. aaa       N2    20081225       121
  9. aaa       N1    20090122       112
  10. aaa       N2    20090122       122
  11. aaa       N1    20090416       113
  12. aaa       N2    20090416       123
  13. aaa       N3    20090416       133
  14. ;

  15. proc sql noprint;
  16.         create table all as
  17.         select l.name,visit,date
  18.             from
  19.                 (select unique name,visit from test) as l
  20.                 cross join
  21.                 (select unique name,date from test) as r
  22.                 order by date,visit;
  23. quit;


  24. data want;
  25.         merge test all;
  26.         by date visit;
  27. run;
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 50 热心帮助其他会员

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

使用道具

藤椅
Laughing06 发表于 2014-6-3 18:30:53 |只看作者 |坛友微信交流群
zhengbo8 发表于 2014-6-3 17:02
恩,刚才试了下,没有问题。但是,你这个code里面是对date进行处理,因为我给的例子是特例,日期是一致的,但是有时候N1和N2的date是不同的,还这样处理的话就多出来一些观测值。比如将第二条观测值的date改为20081230,就不行了。我的数据集是通过sort by date visit来确定前两个观测值是一组,3、4是一组,最后三个是一组的。不知我表述是否清楚?希望你再给我一些提示。多谢

使用道具

板凳
zhengbo8 发表于 2014-6-3 18:51:20 |只看作者 |坛友微信交流群
这个就不好处理了,最好给源数据集。

使用道具

报纸
Laughing06 发表于 2014-6-3 19:35:12 |只看作者 |坛友微信交流群
zhengbo8 发表于 2014-6-3 18:51
这个就不好处理了,最好给源数据集。
obs        name        date        visit        value
1        aaa        20090306        N1        100
2        aaa        20090306        N2        28
3        aaa        20100716        N1        28
4        aaa        20100716        N2        97
5        aaa        20101008        N1        80
6        aaa        20101010        N2        98
7        aaa        20101229        N1        82
8        aaa        20101229        N2        50
9        aaa        20110323        N1        49
10        aaa        20110323        N2        26
11        aaa        20110323        N3        75
这是源数据。前面是两两一组,最后三个是一组,我是想在前面四组中也分别生成一个N3, 使得N3的date=N2的date, value=空 即可。但是你仔细看,第5、6个观测值虽然是一组,但是日期差两天,而不是相同,如果按照你之前的code, 则会生成分别对应的那天没有的N&i。这样就多了一组观测值。不知怎么解决这个问题。

使用道具

地板
mingfeng07 学生认证  发表于 2014-6-6 00:04:37 |只看作者 |坛友微信交流群
Laughing06 发表于 2014-6-3 19:35
obs        name        date        visit        value
1        aaa        20090306        N1    ...
在后边加一个新变量N,第一组用1表示,第二组用2表示,第三组用3表示,第四组用4表示,第五组用5表示,再用二楼的code就能得到结果了,只是需要对code改动一下,需要加入新变量N放里面。
欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

使用道具

7
Laughing06 发表于 2014-6-6 09:44:03 |只看作者 |坛友微信交流群
mingfeng07 发表于 2014-6-6 00:04
在后边加一个新变量N,第一组用1表示,第二组用2表示,第三组用3表示,第四组用4表示,第五组用5表示, ...
请问怎么加组别呢?能不能给我提示一下。谢谢

使用道具

8
mingfeng07 学生认证  发表于 2014-6-6 10:19:39 |只看作者 |坛友微信交流群
Laughing06 发表于 2014-6-6 09:44
请问怎么加组别呢?能不能给我提示一下。谢谢
  1. data a;
  2. input    name $        date $       visit $       value;/*万恶的浏览器,又把我的字符标志$弄没了*/
  3. cards;
  4.          aaa        20090306        N1        100
  5.        aaa        20090306        N2        28
  6.        aaa        20100716        N1        28
  7.         aaa        20100716        N2        97
  8.        aaa        20101008        N1        80
  9.       aaa        20101010        N2        98
  10.       aaa        20101229        N1        82
  11.        aaa        20101229        N2        50
  12.        aaa        20110323        N1        49
  13.        aaa        20110323        N2        26
  14.        aaa        20110323        N3        75
  15. ;
  16. run;
  17. data b;
  18. set a;
  19. retain N;
  20. if mod(_n_,2)=1 and _n_<9 then N+1;
  21. if _n_=9 then N+1;
  22. run;
复制代码
欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

使用道具

9
zhanglianbo35 发表于 2014-6-19 15:05:08 |只看作者 |坛友微信交流群
data one;
input  obs  name $  date  visit $ value;
cards;
1        aaa        20090306        N1        100
2        aaa        20090306        N2        28
3        aaa        20100716        N1        28
4        aaa        20100716        N2        97
5        aaa        20101008        N1        80
6        aaa        20101010        N2        98
7        aaa        20101229        N1        82
8        aaa       20101229        N2        50
9        aaa       20110323        N1        49
10       aaa       20110323        N2        26
11       aaa       20110323        N3        75
;
run;
proc sort data=one (keep=name date) out=dummy nodupkey;
  by name date;
run;
data dummy2;
length visit $8;
   set dummy;
   do VISIT= 'N1','N2','N3';
    output;
   end;
run;
proc sort data= dummy2;
by name date VISIT;
proc sort data=one;
  by name date visit;
run;
data final ;
  merge dummy2(in=a) one;
  by name date visit;
  if a;
run;
已有 1 人评分论坛币 收起 理由
admin_kefu + 50 热心帮助其他会员

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

使用道具

10
zhanglianbo35 发表于 2014-6-19 15:09:57 |只看作者 |坛友微信交流群
zhanglianbo35 发表于 2014-6-19 15:05
data one;
input  obs  name $  date  visit $ value;
cards;
斜体字后面的 $  提交的时候自动消失了

使用道具

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

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

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

GMT+8, 2024-4-26 17:19