sas中的垂直列求和

sas中的垂直列求和,sas,column-sum,Sas,Column Sum,我有下面的结果,我需要补充。这似乎是一个简单的请求,但我已经花了几天时间试图找到解决这个问题的方法 数据包括: Measure Jan_total Feb_total Startup 100 200 Switcher 300 500 需要数据: Measure Jan_total Feb_total Startup 100 200 Switcher 300 500 Total

我有下面的结果,我需要补充。这似乎是一个简单的请求,但我已经花了几天时间试图找到解决这个问题的方法

数据包括:

Measure   Jan_total   Feb_total
Startup      100         200
Switcher     300         500
需要数据:

Measure   Jan_total   Feb_total
Startup      100         200
Switcher     300         500
Total        400         700
我想单独放置在各自的列下,请每列垂直总和的结果


有人能帮我找到此请求的解决方案吗?

要在数据步骤代码中执行此操作,请执行以下操作:

data want;
  set have end=end;       * Var 'end' will be true when we get to the end of 'have'.;
  jan_sum + jan_total;    * These 'sum statements' accumulate the totals from each observation.;
  feb_sum + feb_total;
  output;                 * Output each of the original obbservations.;
  if end then do;         * When we reach the end of the input...;
    measure = 'Total';    * ...update the value in Measure...;
    jan_total = jan_sum;  * ...move the accumulated totals to the original vars...;
    feb_total = feb_sum;
    output;               * ...and output them in an additional observation.
  end;
  drop jan_sum feb_sum;   * Get rid of the accumulator variables (this statement can go anywhere in the step).;
run;

你可以用很多其他的方法。假设您实际拥有所有月份的列,您可以重新编写数据步骤代码以使用数组,或者您可以使用PROC SUMMARY或PROC SQL计算总计,并使用更短的数据步骤将结果总计添加回来,等等。

要在数据步骤代码中执行此操作,您可以执行以下操作:

data want;
  set have end=end;       * Var 'end' will be true when we get to the end of 'have'.;
  jan_sum + jan_total;    * These 'sum statements' accumulate the totals from each observation.;
  feb_sum + feb_total;
  output;                 * Output each of the original obbservations.;
  if end then do;         * When we reach the end of the input...;
    measure = 'Total';    * ...update the value in Measure...;
    jan_total = jan_sum;  * ...move the accumulated totals to the original vars...;
    feb_total = feb_sum;
    output;               * ...and output them in an additional observation.
  end;
  drop jan_sum feb_sum;   * Get rid of the accumulator variables (this statement can go anywhere in the step).;
run;
proc means noprint
    data = have;
    output out= want
    class measure;
    var Jan_total   Feb_total;
run;

你可以用很多其他的方法。假设您实际拥有所有月份的列,您可以重新编写数据步骤代码以使用数组,或者您可以使用PROC SUMMARY或PROC SQL计算总计,并使用更短的数据步骤将结果总计添加回来,等等。

这取决于这是用于显示还是用于数据集。在数据集中有一个总数通常是没有意义的,它只是用于报告

proc means noprint
    data = have;
    output out= want
    class measure;
    var Jan_total   Feb_total;
run;
PROC PRINT有一个SUM语句,用于将总计添加到报告末尾。PROC TABLATE还提供了另一种类似这样的报告机制

结果:


这取决于它是用于显示还是用于数据集。在数据集中有一个总数通常是没有意义的,它只是用于报告

PROC PRINT有一个SUM语句,用于将总计添加到报告末尾。PROC TABLATE还提供了另一种类似这样的报告机制

结果:


你好,Sahil,欢迎来到StackOverflow。考虑解释你的问题的背景。例如,说出它的上下文(HTMLCSS、React、Android等),这样用户就可以为您提供有意义的答案。另外,为了更好地理解这个问题,请添加一些您正在进行的工作的代码。这是否回答了您的问题?如果你得到了完美的答案,请考虑将它标记为接受。您可以按答案左上角的复选标记来完成此操作。投票也是一种选择。我之所以提到这一点,是因为你是stackoverflow的新手,而且因为你在评论中表达了你的欣赏,你可以通过给回答者评分来给他荣誉。不要觉得这样做有压力,因为你总是可以等待更好的答案,或者可能它不够让你满意。嗨,Sahil,欢迎来到StackOverflow。考虑解释你的问题的背景。例如,说出它的上下文(HTMLCSS、React、Android等),这样用户就可以为您提供有意义的答案。另外,为了更好地理解这个问题,请添加一些您正在进行的工作的代码。这是否回答了您的问题?如果你得到了完美的答案,请考虑将它标记为接受。您可以按答案左上角的复选标记来完成此操作。投票也是一种选择。我之所以提到这一点,是因为你是stackoverflow的新手,而且因为你在评论中表达了你的欣赏,你可以通过给回答者评分来给他荣誉。不要觉得这样做有压力,因为你总是可以等待更好的答案,或者可能这还不够让你满意。非常感谢你的解释和详细的代码。它给了我所需要的最终输出。感谢您。作为问题的作者,您可以选择将答案标记为您选择的答案,为答案的作者再加15分。@Chris,您能帮我一点忙吗?如果我有相同的数据结构,但我需要计算一系列变量的总和,就像上面的情况一样,会怎么样?在解决方案中,您提到了单个变量名称,如jan_total、feb_total等。我有14个月的此类运行数据,需要对这些数据进行汇总,并且需要在每个类别下面显示总计。有什么想法吗?非常感谢您的解释和详细的代码。它给了我所需要的最终输出。感谢您。作为问题的作者,您可以选择将答案标记为您选择的答案,为答案的作者再加15分。@Chris,您能帮我一点忙吗?如果我有相同的数据结构,但我需要计算一系列变量的总和,就像上面的情况一样,会怎么样?在解决方案中,您提到了单个变量名称,如jan_total、feb_total等。我有14个月的此类运行数据,需要对这些数据进行汇总,并且需要在每个类别下面显示总计。有什么想法吗?