全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7266 10
2013-04-16
数据结构举例如下。"."表示缺省值。
分组    Jan Feb March April May June July August
a          1      .     2       3      2      4      .      4
a          1      .      .       4      .        .       .      5
a          .        .      .       4      .        5     .      5
b          1      .     2       3      2      4      .      4
b          1      .      .       4      .        .       .      5
b          .        .      .       4      .        5     .      5
c          1      .     2       3      2      4      .      4
c          1      .      .       4      .        .       .      5
c          .        .      .       4      .        5     .      5
有两个问题希望能有高手帮帮我。
(1)如何将同一分组内(分组a,b,c)的同一变量的(Jan, Feb,.....)不同观测值合并?
   比如最终希望得到以下结果。
分组    Jan Feb March April May June July August
a          2      .     2      11      2      9    .     14
b          2      .     2      11     2      9      .     14
c          2    .       2       11    2     9      .     1 4
(2)对于合并后的各组,如何计算连续的有观测值的变量个数?
分组    Jan Feb March April May June July August
a          2      .     2       11      2      9     .     14
希望输出    a         Jan              1
                  a        March-June  4
                  a        August         1
谢谢啦!




二维码

扫码加我 拉你入群

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

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

全部回复
2013-4-16 12:09:29
看不懂在说什么,问问题完全沉浸在自己的世界里,完全不考虑别人能不能看懂你想要说什么
二维码

扫码加我 拉你入群

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

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

2013-4-16 12:15:38
Imasasor 发表于 2013-4-16 12:09
看不懂在说什么,问问题完全沉浸在自己的世界里,完全不考虑别人能不能看懂你想要说什么
可能是我自己叙述有问题,不好意思。我加了举例说明,不知道是否说清楚了。
二维码

扫码加我 拉你入群

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

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

2013-4-16 12:57:12
第二个问题:
data test;
input group $    Jan Feb March April May June July August ;
cards;
a          1      .     2       3      2      4      .      4
a          1      .      .       4      .        .       .      5
a          .        .      .       4      .        5     .      5
b          1      .     2       3      2      4      .      4
b          1      .      .       4      .        .       .      5
b          .        .      .       4      .        5     .      5
c          1      .     2       3      2      4      .      4
c          1      .      .       4      .        .       .      5
c          .        .      .       4      .        5     .      5
d          1      2     2       3      2      4      .     .
d          1      2      3       4      4        5       7      5
d          .        .      .    .         .       .      .      .

;

data wanted;
   set test;
   array tmp(*) jan--august;
   length month $20;
   i=0;
   do until(flag);
       call missing(month);
           *** Get fir non-missing;
           do until(^missing(tmp(i)));
              i+1;
                  if i=8 then leave;
           end;

       *** leave if at the end and is missing;
       if i=8 and missing(tmp(i)) then leave;

           j=i;
           month=vname(tmp(i));
           num=1;

           *** Get the next missing item;
           do until(missing(tmp(i)));
              i+1;
                  if i=9 then leave;
                  if ^missing(tmp(i)) then num+1;
                end;
               
                if j < i-1 then month=catx("-",month,vname(tmp(i-1)));

                *** output ;
                output;
                if i>=8 then flag=1;
        end;
        keep group month num;
run;

     
二维码

扫码加我 拉你入群

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

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

2013-4-16 13:00:53
第一个问题可以参考:

proc sql;
  create table wanted as
   select group,sum(jan) as jan, sum(feb) as feb, sum(march) as march,sum(april) as april
     from test
         group by group;
quit;
二维码

扫码加我 拉你入群

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

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

2013-4-16 13:24:39
看看
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群