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设置。
我想计算数据集中的值。所以如果我的数据集看起来像
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设置。