我对SAS中2个程序中我们称之为声明的内容感到困惑? 两个语句都是SUM语句吗?
当我遇到一个询问是否可以在DATA步骤中使用SUM语句的问题时,我感到很困惑。我想知道他们指的是哪个总结陈述?
第一个程序 -
Data s1;
set Ori.sales;
Total+Salary; /* What do you call this highlighted statement */
run;
第二个计划 -
Proc print data=ori.sales;
sum Salary; /* What do you call this highlighted statement */
run;
答案 0 :(得分:3)
看起来确实都叫做SUM语句。一个是数据集SUM语句,第二个是Proc Print Sum语句。但是,它们的运作方式不同。
参考SAS 9.2文档: 数据步骤SUM语句 http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000289454.htm
Proc Print SUM Statement http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000064121.htm
简短版本: 数据步骤SUM包括对变量Total的隐式保留并计算运行总计。
Proc Print SUM语句将数据集的总和作为最后一行添加,但不包括运行总计。
答案 1 :(得分:1)
如果我清楚地理解你的问题......
SUM“函数”(在数据步骤中使用)将处理缺失值,在数据步骤中使用total = var1 + var2将不会(处理缺失值)。以下示例......
data sales;
input a b c d;
cards;
1 2 3 .
4 5 . 8
. 4 6 .
4 5 1 2
;
run;
即使您缺少值,下面的SUM函数也会生成“总计”列 -
data new;
set sales;
Total=sum(a,c);
run;
如果您要添加的变量中缺少值,则使用(+)符号的下面的数据步骤将使“总计”值显示为“缺失” -
data new2;
set sales;
Total = a + c;
run;
答案 2 :(得分:0)
你可以调用第一个程序来计算累计金额,每个记录得到的总数是当前记录的工资和所有记录前工资总和之和,最后记录,总数是所有记录的工资总和。在第二个程序中,您只能获得所有记录的工资总和。
答案 3 :(得分:-1)
我想通过关注sum
声明和Sum
函数来强化@Reeze答案。
当您遇到DATA STEP的伪代码/ SAS编程考试时,您会发现这两个术语经常出现。
sum(variable(s))
函数是指在任何语句中使用Sum
。
a + b
语句是指使用自动保留形式的求和变量:DataContext
它们的相似之处在于它们都可以很好地处理缺失值。