SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1027|回复: 4
打印 上一主题 下一主题

请教如何统计这种表中的各种值的个数~~

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-5-5 10:23:35 | 只看该作者

请教如何统计这种表中的各种值的个数~~

数据集的一部分如下:
      p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 ...
s1       a   b   c   b  b   a   c   c   a   a
s2       c   c   b   a  a   a   b   c   c   c
s3       a   a   b  c   b   a   a   c   b   c
...

P*代表的是不同的个体,s*是每个个体的某几项特征,特征值取值范围就是a,b,c
现在想要按列统计,全部样本中每个s*对应的a,b,c各有多少个,不知道代码该如何实现呢?

另外,再请教下,不知道是不是这个原始表转置一下会比较方便点?s*有44万个,样本P*是500人。

谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-5-5 18:00:20 | 只看该作者

Re: 请教如何统计这种表中的各种值的个数~~

一个我自己写的并且自己越看越觉得恶心的程序如下:
[code:35joer9x]
%macro a;
        data result;
                length id $8;
                id='a';output;
                id='b';output;
                id='c';output;
        run;
        %do i=1 %to 10;
        proc freq data=a noprint;
                tables p&i /out=aa(drop=percent rename=(p&i.=id count=p&i.));
        run;

        data result;
                merge result aa;
                by id;
        run;
        %end;
%mend;
%a;
[/code:35joer9x]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-5-6 09:09:44 | 只看该作者

Re: 请教如何统计这种表中的各种值的个数~~

先多谢楼上byes大牛的回复!
不过我发现我表述的有些问题,我的疑惑应该如下:

数据集的一部分如下:
        p1 p2 p3 p4 p5 p6 p7 ...
case1     a b c b b a c c a a
control1  c c b a a a b c c c
case2     a a b c b a a c b c
control2  b b c a a c b a c b
control3  c c c a a c c b c c
...

想要通过统计生成如下的表:
        Na Nb Nc
case        *    *    *
control    *    *    *

Na,Nb,Nc分别是case和control里a,b,c的个数
(就是说不用单独求每一行的a,b,c各自的总数了,只用case的统计到一起,control的统计到一起)
请问上述过程如何用SAS代码实现?
另外,得到这样的2*3的表之后,如何求相应的卡方值,并在自由度为2的情况下返回P值?
由于自己是SAS白痴,看一本入门教程貌似没找到解决方法,所以特求教各位大牛了!
期待赐教!不胜感激!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-5-6 20:00:45 | 只看该作者

Re: 请教如何统计这种表中的各种值的个数~~

[code:37ozm8cr]
data a;
array p{0:7} $ s p1-p7;
input s p1-p7;
cards;
case1 a b c b b a c c a a
control1 c c b a a a b c c c
case2 a a b c b a a c b c
control2 b b c a a c b a c b
control3 c c c a a c c b c c
;
run;

data b;
        set a;
        length group $8;
        array p{*} p1-p7;
        if 'case'=:s then group='case';
        else if 'control'=:s then group='control';
        na=0;nb=0;nc=0;
        do i=1 to dim(p);
                if p(i)='a' then na+1;
                else if p(i)='b' then nb+1;
                else if p(i)='c' then nc+1;
        end;
run;

proc means data=b  nway noprint;
        class group;
        var na nb nc;
        output out=b(drop=_type_ _freq_) sum=;
run;
[/code:37ozm8cr]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-7-29 11:15:27 | 只看该作者

Re: 请教如何统计这种表中的各种值的个数~~

data a;
array p{0:10} $ s p1-p10;
input s  p1-p10;
cards;
case1 a b c b b a c c a a
control1 c c b a a a b c c c
case2 a a b c b a a c b c
control2 b b c a a c b a c b
control3 c c c a a c c b c c
;
run;

data case ;
set a;
if index(s,'case')>0 then do;
s='case';
output;
end;
run;

data control  ;
set a;
if index(s,'control')>0 then do;
s='control';
output;
end;
run;

data case2 (keep=s aa bb cc);
set case nobs=total;
array q{0:10} $ _all_;
s=q[0];
retain aa 0 bb 0 cc 0  ;
do i=1 to 10;
if q[i]='a' then aa=aa+1;
if q[i]='b' then bb=bb+1;
if q[i]='c' then cc=cc+1;
end;
if _n_=total then output;
run;
data control2 (keep=s aa bb cc);
set control nobs=total;
array q{0:10} $ _all_;
s=q[0];
retain aa 0 bb 0 cc 0  ;
do i=1 to 10;
if q[i]='a' then aa=aa+1;
if q[i]='b' then bb=bb+1;
if q[i]='c' then cc=cc+1;
end;
if _n_=total then output;
run;

data result (keep=s aa bb cc);
set case2 control2 ;

run;

proc transpose data=result
          out=chisq
(rename=(col1=f _NAME_=c));
                  by s;
               
     run;
proc freq;
weight f;
tables s*c/chisq;
run; <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 00:28 , Processed in 0.071441 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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