SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2136|回复: 12
打印 上一主题 下一主题

求助一个数据合并问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-12-12 03:57:18 | 只看该作者

求助一个数据合并问题

我有一组数据按group排列,对于group中的每一个人,k=1 or 0, a=1 or 0, 我想求这个group中k=1和a=1的百分比. 数据简单写为:
data temp;
input  group k a;
cards;
11 1 0
11 0 1
11 1 0
22 1 0
22 1 0
33 0 1
33 0 0
33 0 0
;
run;
proc sort data=temp; by group; run;

我希望的输出为:
group   k    a   sum  
11       2    1    3
22       2    0    2
33       0    1    2
然后通过这个求百分比。 我尝试用 first. and last.,  没有实现。请求各位帮助!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-12-12 06:59:21 | 只看该作者

Re: 求助一个数据合并问题

[code:3t1p1yex]
options validvarname=any;
data temp1(drop=k a);
        if 0 then set temp(keep=group);
        'k=1'n=0;
        'a=1'n=0;
        do sum=1 by 1 until(last.group);
                set temp;
                by group;
                'k=1'n + (k=1);
                'a=1'n + (a=1);
        end;
run;
[/code:3t1p1yex]
另外还有很多办法。

不过呢,其实您最好手工数,这样领导看您忙,才会有好报!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-12-12 09:53:23 | 只看该作者

Re: 求助一个数据合并问题

[code:2xiyv2ak]proc sql;
  select group, sum(k)/count(k)*100 as percentk,sum(a)/count(a)*100 as percenta
  from temp
  group by group
  ;[/code:2xiyv2ak]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-12-12 14:09:40 | 只看该作者

Re: 求助一个数据合并问题

需要好多代码啊。

data ex(keep=kpec apec);
    set temp;
        by group;
         retain t1-t4 kpec apec ;
         if first.group then
        do;
          t1=0; t2=0;t3=0;t4=0;
            end;
              t1+k;        t2+1;
              t3+a; t4+1;
              kpec=t1/t2;
              apec=t3/t4;
        if last.group then output ;
        run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-12-12 18:21:06 | 只看该作者

Re: 求助一个数据合并问题

[code:2owsyfs1]data result(drop=k a count);
        set temp;
        by group;
        retain sum_k sum_a count;
        if first.group then do;
                sum_k=0; sum_a=0; count=0;
        end;
        sum_k+(k=1);sum_a+(a=1);count+1;
        if last.group then do;
                sum_k=sum_k/count;sum_a=sum_a/count;output;
        end;
        format sum_k sum_a percent8.2;
run;[/code:2owsyfs1]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2008-12-22 21:18:36 | 只看该作者

Re: 求助一个数据合并问题

data a1.tmp(drop=k a);
set a1.tmp;
      by group;
      retain num1 num2 0;
      if first.group then do;
          num1=0;
          num2=0;
      end;
      if k=1 then do;
         num1=sum(num1,1);
      end;
      if a=1 then do;
         num2=sum(num2,1);
      end;
      if last.group then do;
          sum=num1+num2;
          output;
      end;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2008-12-23 12:39:03 | 只看该作者

Re: 求助一个数据合并问题

[quote="ahuige":2prqo7oo][code:2prqo7oo]proc sql;
  select group, sum(k)/count(k)*100 as percentk,sum(a)/count(a)*100 as percenta
  from temp
  group by group
  ;[/code:2prqo7oo][/quote:2prqo7oo]

正解,只是count(a) 和count(k)效果都是一样。没必要分开


proc sql;

select Group , sum(k) as k , sum(a) as a , count(*) as Num from temp group by group;

quit;
这样已经实现楼主要求!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2008-12-23 14:34:59 | 只看该作者

Re: 求助一个数据合并问题

傻孩子,在有缺失值的情况下,COUNT(A) COUNT(*)是有区别的。

[code:107vq053]data ahuige;
    input a;
    cards;
  1
  2
  .
  ;
  run;

  proc sql;
     select count(a) as counta, count(*) as counts
     from ahuige
     ;[/code:107vq053]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2008-12-24 09:18:58 | 只看该作者

Re: 求助一个数据合并问题

从其它行转SAS,以为SQL语句都一样
受教!!谢谢提醒。
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
10#
发表于 2008-12-29 16:18:08 | 只看该作者

Re: 求助一个数据合并问题

弱弱问一下,那如果k的值是1 或2,a的值是 'Y' 或'N',要求同时对k=1,a='Y'进行类似的统计的话,有比较简洁的好方法么?
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 07:12 , Processed in 0.086807 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表