SAS:在数据集中计算(加、减、多倍、除)值

SAS:在数据集中计算(加、减、多倍、除)值,sas,add,Sas,Add,我想计算数据集中的值。如果我的数据集看起来像 obs x y 1 10 100 2 20 200 3 30 300 4 40 400 x y sum 50 500 我想创建一个新的数据集,只计算原始数据集中的第一行和最后一行值。对于x列,我想加10+40=50,对于y列,我想加100+400=500。所以我的输出数据集看起来像 obs x y 1 10 100 2 20 200 3 30 300 4 40 400

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

obs  x   y
1   10  100
2   20  200
3   30  300
4   40  400
     x   y
sum  50  500
我想创建一个新的数据集,只计算原始数据集中的第一行和最后一行值。对于x列,我想加10+40=50,对于y列,我想加100+400=500。所以我的输出数据集看起来像

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

我不知道如何从数据集中提取特定的单元格并对其求和(或乘法)。提前谢谢。

您可以使用
\u N\u1
条件来识别使用
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(显示管理器),则可以对日志窗口键进行编程,以执行自定义命令(使用键命令输入命令)。我总是将
CTL RMB
编程为
VT&SYSLAST
,以便在将鼠标右键悬停在日志窗口上时,控制鼠标右键将提升上次创建的数据集的ViewTable查看器


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