SAS:计算(加、减、乘、除)数据集中的值

SAS: Calculating(add, subtract, multipy, divide) values in a dataset

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

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

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

您可以使用 _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 window 键进行编程以执行自定义命令(使用 KEYS 命令输入命令)。我总是将 CTL RMB 编程为 VT &SYSLAST,这样当悬停在 LOG window 上时 Control-Right mouse button 将为最后创建的数据提升 ViewTable Viewer设置。