0

我是 SAS 新手,但熟悉 R、MATLAB 和 Stata。

在研究时我还没有发现的一件事是能够在整个数据集中处理单个观察结果。假设这个数据集是我正在处理的每一步:

Stock     Volume1 Volume2 Volume3
Apple     200     100     101
Amazon    150     1000    1020
Facebook  135     80      85
Google    80      75      80

我将举例说明我想要做什么。

  1. 取第 2 段和第 3 段体积的平均值,这样我就输出了一个表格:

    Volume (Avg)
    142.5
    
    1. 此外,我希望在这些细分中取几列的平均值,例如

      Stock     Volume1 Volume2 Volume3 Volume Average
      Apple     200     100     101     133.67
      Amazon    150     1000    1020    723.33
      
                                        428.50
      
      Facebook  135     80      85      100
      Google    80      75      80      78.33
      
                                        89.165
      
                                                        258.8325
      

通常,寻找允许我在数据集中为诸如均值、求和、创建表和任何类型的数据操作等运算符工作的语法。

4

2 回答 2

0

您的问题非常广泛,但这里有几个基本的相关示例供您参考:

data have;
input Stock $ Volume1 Volume2 Volume3;
cards;
Apple     200     100     101
Amazon    150     1000    1020
Facebook  135     80      85
Google    80      75      80
;
run;

data row_means;
  set have;
  volume_mean = mean(of volume1-volume3);
run;

proc summary data = have;
  var volume1-volume3;
  output out = column_means mean=;
run;

对于更高度可定制的输出,听起来您可能也对proc reportor感兴趣proc tabulate,但使用这些的综合指南超出了本网站的范围。

于 2018-02-23T11:59:50.187 回答
0

你的问题提出的不是很好,所以我会尝试提出一些想法,然后我们可以讨论。

您可以向数据集添加行标识符:

data yourdata2;
set yourOriginalData;
rownum = _N_;
run;

那么您可以使用各种方法中的任何一种来计算均值:

proc sql;
create table your_summarydata as
select avg(volume) as vol_mean
from yourdata2
where rownum in (2,3);
quit;

我正在扩展您的原始想法。我不建议使用这种方法进行任何认真的计算。在现实世界中,我会组成一些分类变量,我希望计算这些变量,然后使用类似的东西:

proc sql;
create table your_summarydata as
select groupvar, avg(volume) as vol_mean
from yourdata2
where 1=1 /* where conditions go here if you want to restrict the input dataset before calculations */
group by groupvar
quit;
于 2018-02-23T07:51:59.303 回答