【问题标题】:SAS: Calculating(add, subtract, multipy, divide) values in a datasetSAS:计算(加、减、乘、除)数据集中的值
【发布时间】:2021-04-26 00:49:14
【问题描述】:

我想计算数据集中的值。所以如果我的数据集看起来像

obs  x   y
1   10  100
2   20  200
3   30  300
4   40  400

我想创建一个仅计算原始数据集中第一行和最后一行值的新数据集。所以对于x列,我想加10+40=50,对于y列,我想加100+400=500。所以我的输出数据集看起来像

     x   y
sum  50  500

我不确定如何从数据集中提取特定单元格并将它们相加(或相乘)。提前谢谢你。

【问题讨论】:

  • 您是从什么编程语言/背景进入 SAS 的?你会使用什么语法?某些统计数据通常通过编码Proc MEANS 步骤来计算,但是值的乘积不是其中之一。对于特殊计算,您将使用DATA 步骤并根据需要在组或数据集的最后一行收集值(在变量或数组元素中)以进行计算。 DATA 步骤的功能和处理规则可能与您当前的编码体验不一致。
  • 我对Python只有一点经验,所以在python中,我会使用方括号[]和冒号:抓取整行或整列,但我不确定如何在SAS中做到这一点.

标签: sas add


【解决方案1】:

您可以使用_N_=1 条件来识别使用SET 语句读取的第一行数据。此外,END= 选项用于测试最后一行。将第一行的值存储在保留变量中,这些变量将在读取最后一行时执行的计算中使用。

例子:

data have;
    input x   y;
    datalines;
10  100
20  200
30  300
40  400
;

data want(keep=x y label='Sum from values in first and last row of have');
    set have end=lastrow_flag;

    retain x_firstrow y_firstrow;

    if _n_ = 1 then do;
        x_firstrow=x; 
        y_firstrow=y; 
    end;

    if lastrow_flag then do;
        x = sum (x_firstrow, x);
        y = sum (y_firstrow, y);
        OUTPUT;
    end;
run;

专业提示:

如果您正在运行 PC SAS(显示管理器),您可以对 LOG 窗口键进行编程以执行自定义命令(使用 KEYS 命令输入命令)。我总是将 CTL RMB 编程为 VT &SYSLAST,以便 Control-鼠标右键 在将鼠标悬停在 LOG 窗口上时会为最后创建的数据集打开 ViewTable 查看器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2015-12-24
    • 2012-03-03
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多