【问题标题】:Mean procedure with SAS使用 SAS 的平均程序
【发布时间】:2015-04-02 06:29:09
【问题描述】:

我想找到以下数据线的平均值; 我正在尝试的方式,我得到了基于否的平均值。在这种情况下是 6 的观察值。但我希望它基于 Day,所以它类似于 Mean = Timeread/(no. of day),即 3

name    Day    Timeread
X        1        12
X        1        23
X        1        12
X        2        8
X        2        5
X        3        3 

这是我使用的代码

proc summary data = xyz nway missing;
  class Name;
  var timeread;
  output out = Average mean=;
run;
proc print data = Average;
run;

【问题讨论】:

    标签: sas


    【解决方案1】:

    我不确定如何使用 proc mean 执行此操作,但您可以在 SQL 中执行此操作,如下所示:

    proc sql noprint;
      create table want as
      select name, 
             sum(timeread) / count(distinct day) as daily_mean
      from have
      group by name
      ;
    quit;
    

    这使用来自@CarolinaJay65 的答案的 HAVE 数据集。

    【讨论】:

    • 是的,这就是我想要的输出,但使用 proc summary 或 proc mean。
    【解决方案2】:

    如果您只是想要按总不同天数计算的总时间的平均值

    Data HAVE;
    Input name $   Day  Timeread ;
    Datalines;
    X        1        12
    X        1        23
    X        1        12
    X        2        8
    X        2        5
    X        3        3 
    ;
    Run;
    
    Proc Sql;
        Create table WANT as
        Select Name, (select count(distinct(Day)) from HAVE) as DAYS
         , sum(timeread) as TIMEREAD_TOTAL
         , calculated timeread_total/calculated days as MEAN
        From HAVE
        Group by Name;
    Quit;
    

    【讨论】:

    • 不,这给了我以下格式的输出 Name Timeread ` X (12+23+12)/3` X (8+5)/2 ` X (3/1)` 而我想要 ` X (12 +23+12+8+5+3)/3` P.S 很抱歉不能把它变成代码格式,所以很容易理解
    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多