Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 以类别作为标签制表_Sas - Fatal编程技术网

Sas 以类别作为标签制表

Sas 以类别作为标签制表,sas,Sas,我试图制作一个表格,其中包含每组的总数。 我有章节、小节和条目。在每一小节之后 应显示一行与本小节的总计,并且 在每个区段之后,都有一行区段总数 我试着使用proc tablate,但是小计被称为Sum或其他固定标签。我想使用分类名称进行分类汇总 例1 首先是一个小例子来说明,下面我有一个完整的运行示例 这显示了我在程序表上的尝试以及我想要实现的目标 输入数据 ============================== Group Group2 Item Weight -----

我试图制作一个表格,其中包含每组的总数。 我有章节、小节和条目。在每一小节之后 应显示一行与本小节的总计,并且 在每个区段之后,都有一行区段总数

我试着使用
proc tablate
,但是小计被称为Sum或其他固定标签。我想使用分类名称进行分类汇总

例1 首先是一个小例子来说明,下面我有一个完整的运行示例 这显示了我在程序表上的尝试以及我想要实现的目标

输入数据

==============================
Group   Group2  Item    Weight
-----   ------  ----    ------
Mammals Cats    Lion       215
Mammals Cats    Cheetah     70
Mammals Dogs    Wolf        80
Mammals Dogs    Jackal      45
==============================
期望结果

===================
Group/Item   Weight
-----------  ------
    Lion        215
    Cheetah      70
  Cats          285
-----------  ------
    Wolf         80
    Jackal       45
  Dogs          125
-----------  ------
Mammals         410
=================== 
例2 SAS代码中稍长的示例 其中还包括缺少的值

data animals;
input group1 $ group2 $ animal $ weight;
datalines;
Mammals Cats    Lion 215
Mammals Cats    Cheetah 70
Mammals Cats    Leopard 65
Mammals Dogs    Wolf 80
Mammals Dogs    Jackal 45
Birds   Raptors Eagle 6
Birds   Raptors Hawk 5
Birds   .       Duck 2
.       .       Snake 3
;
我的尝试失败了,桌子太复杂了

PROC TABULATE DATA=ANIMALS OUT=ANIMAL_SUMMARY;
    VAR weight;

    CLASS group1 / ORDER=DATA MISSING;
    CLASS group2 / ORDER=DATA MISSING;
    CLASS animal / ORDER=DATA MISSING;

TABLE group1*(group2*(animal Sum) Sum) Sum, weight;
RUN;
接近预期结果的一种数据形式

data target;
input group1 $ group2 $ animal $ weight;
datalines;
. . Lion 215
. . Cheetah 70
. . Leopard 65
. Cats . 350
. . Wolf 80
. . Jackal 45
. Dogs . 125
Mammals . . 475 
. . Eagle 6
. . Hawk 5
. Raptors . 11
. . Duck 2
Birds . . 13
. . Snake 3
. . . 491
;
我不认为你能从表格中得到你想要的东西。你可能得去报到才能得到你想要的

不过,你可以靠得很近

PROC TABULATE DATA=ANIMALS OUT=ANIMAL_SUMMARY;
    VAR weight;

    CLASS group1 / ORDER=DATA MISSING;
    CLASS group2 / ORDER=DATA MISSING;
    CLASS animal / ORDER=DATA MISSING;

TABLE group1*(group2*(animal=' ' Sum=' '*group2=' ') Sum=' '*group1=' ') Sum='Total', weight;
RUN;
我在这里添加了
group2
group1
,并删除了一些标签。出于某种原因,它不会删除所有标签,但它确实删除了大部分标签,并将您的group2/group1放在正确的行上

它还发出警告:

警告:类变量在第313行的table语句中与自身交叉。这可能会导致不可预测的结果

在这种情况下,这很好,但要注意这一点(特别是如果您的商店是“干净的原木”商店;在这种情况下,这可能不起作用)


除此之外,我认为您必须转到
PROC REPORT
获取,这是很有可能的(例如,REPORT很乐意使用
RBREAK
对行进行小计)。

特别感谢使用
PROC REPORT
的建议,我需要更多地阅读它,但它似乎更适合这项任务。