繁体   English   中英

SAS中每个独立观察的平均___?

Average ___ per distinct observation in sas?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个有关成绩的SAS数据集。 以下是一个子集:

 Name:     Grade:      Subject:   
Bob         8         English
Bob         6         Maths
Bill        7         English
Joe         9         Maths

有没有办法可以找到每人的平均成绩? 用另一种语言,我知道我会按名称分组,最后得到

 Name:     Grade:       
Bob         14                      
Bill        7         
Joe         9     

然后找到平均值,即总和(等级)/ len(等级),以获得每人的平均等级,即(30/3 = 10)。

请注意,在此示例中,我的某些观察多次出现,例如“鲍勃”,这就是为什么需要“分组依据”方法的原因。

有没有办法在sas中做到这一点?

4 个回复

数据步骤中这样的事情

/*sorting*/
proc sort data=have out=have1;
by name;
run;


  data want(drop=new_grade);
  do until(last.name);
  set have1(rename=(grade=new_grade));
  by name;
 grade = sum(new_grade, grade);
end;
run;

或在proc sql中

proc sql;
create table want as 
select name, sum(grade) as grade
from have
group by name;

我为您展示了标准SAS数据集上的示例。 您必须事先按要分组的变量进行排序

proc sort data=sashelp.class out=class(keep=Sex Name Weight);
by sex;
run;

接下来添加一些保留变量(保留“下一个”行中的值)并使用lastfirst表达式进行条件处理

data res;
set class;
by sex;
retain sum 0 n 0;
sum+Weight;
n+1;

if last.sex then
    do;
        avg=sum/n;
        n=0;
        Sum=0;
    end;
run;

结果

+---------+-----+--------+-------+---+--------------+
|  Name   | Sex | Weight |  sum  | n |     avg      |
+---------+-----+--------+-------+---+--------------+
| Alice   | F   |     84 |    84 | 1 |            . |
| Barbara | F   |     98 |   182 | 2 |            . |
| Carol   | F   |  102.5 | 284.5 | 3 |            . |
| Jane    | F   |   84.5 |   369 | 4 |            . |
| Janet   | F   |  112.5 | 481.5 | 5 |            . |
| Joyce   | F   |   50.5 |   532 | 6 |            . |
| Judy    | F   |     90 |   622 | 7 |            . |
| Louise  | F   |     77 |   699 | 8 |            . |
| Mary    | F   |    112 |     0 | 0 | 90.111111111 |
| Alfred  | M   |  112.5 | 112.5 | 1 |            . |
| Henry   | M   |  102.5 |   215 | 2 |            . |
| James   | M   |     83 |   298 | 3 |            . |
| Jeffrey | M   |     84 |   382 | 4 |            . |
| John    | M   |   99.5 | 481.5 | 5 |            . |
| Philip  | M   |    150 | 631.5 | 6 |            . |
| Robert  | M   |    128 | 759.5 | 7 |            . |
| Ronald  | M   |    133 | 892.5 | 8 |            . |
| Thomas  | M   |     85 | 977.5 | 9 |            . |
| William | M   |    112 |     0 | 0 |       108.95 |
+---------+-----+--------+-------+---+--------------+

您可以通过SAS中的SQL直接执行此操作。

proc sql noprint;
    create table Avg_Grades as
        select Name, mean(grade) as Avg_Grade
        from have
        group by Name
        ;
quit;

此处最好的方法是使用汇总过程,尤其是如果您需要统计数据而不是均值。 请注意,如果您使用CLASS语句,则不必对数据进行预排序。

  1. 在PROC MEANS语句上,有几个选项:
    • NWAY-仅包括最高级别,否则SAS也将添加总体总计
    • N / MEAN / NMISS / MEDIAN-要准备的统计数据
    • STACKODS更改输出格式,这通常是大多数人想要的格式。
  2. CLASS->分组变量
  3. VAR->要分析的变量
  4. ODS OUTPUT->将结果发送到名为WANT的表。

     proc means data=sashelp.class NWAY N MEAN NMISS MEDIAN STACKODS; CLASS sex; *this is your grouping variable(s), ie name; VAR height; *this is the variable(s) you want to summarize; ods output summary = want; run; 
1 在Sas中每个观察每月计数变量

一个简单的问题,我有以下数据: 交易代码_日期_ Fem分析师(如果为true,则为虚拟1)___该月的变量(例如beta) AA _ 2001年 1月4日_ 1 ___ 0.61 AA _ 2001年5月4日_ 1 ___ 0.62 AA _ 2001年4月4日_ 1 ...

2 SAS:计算平均值,不包括当前观察值

我正在寻找一种优雅的方法(或者失败的是,一种不雅的方法)来计算不包括当前记录的平均值。 因此,如果我有30个观察值,我将得到30个不同的平均值。 每个将是其他29个值的平均值。 根据这些虚构数据,我想创建5个新观察值,其中A,B和C的平均值不包括它们自己的数据。 我有一个模糊的 ...

4 计算每个观察的加权平均值 (Stata)

我有以下两个变量,我试图用每个观察的个体权重来计算失业率。 下面的第一个变量显示给予每个受访者的权重,而第二个变量显示该人是否失业,其中 1 表示个人失业,0 表示他们在工作。 最后,LF_status 以字符串格式表示劳动力状态。 我已经接受了 Cyber​​nike 的帖子,对于所有观察,新 ...

2021-02-17 22:01:09 1 124   stata
6 SAS中每个变量的平均行数

我有以下数据集: 我想要每个业务的平均行数,即计算观察的总数,然后除以不同业务的数量。 在我的示例中:6个观察值,3个业务->每个业务6/2 = 3行。 我当时正在考虑使用proc freq或proc mean step,但到目前为止,我仅获得每个业务的行数(〜freq), ...

2017-10-09 17:11:47 1 39   sas/ proc
7 DAX:每日平均值

我有一些分类在几天内传播。 同一类别可在同一日期多次出现。 我怎样才能获得每天不同类别的平均数量? 数据集: 数据视图中的表: 表格可视化: 我的尝试: 我可以使用dist = CALCULATE(DISTINCTCOUNT(Table1[Cate ...

8 重命名SAS中的重复观察

因此,我一直在尝试找出如何在SAS中重命名ID变量(我制作了一个虚拟数据集尝试此操作,请参见下文) 我需要做的是让a=1 , b=2 , cd=3等等,但是代码需要转移到具有约30,000个观察值且ID都不同的数据集。 我一直在玩first.id和last.id,但绝对没有用。 有人 ...

2016-02-03 20:17:12 2 406   sas
9 SAS特定的观察格式

我想在SAS中创建一个新变量,如果变量“TEXT”中的观察包含8个数字,则取值为1。 问题是,TEXT是一个字符变量。 是否有可能在SAS中进行某种格式搜索? ...

10 SAS:单个观测值的AVG()

我正在尝试获取特定变量列表的模式。 当模式不是唯一的时,我想返回模式的平均值,以使要获取模式的子查询(在较大的查询中)不会返回两个值。 但是,当模式为唯一时,由于某种原因,平均查询将返回缺少的值。 我有以下示例数据: 如果我在betprice字段中添加更多观察值,以致于模式不是 ...

2013-08-22 11:42:36 3 217   sql/ sas
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM