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中如何做到这一点。