使用proc sql查找最多10个变量

时间:2017-10-09 11:00:09

标签: sas proc-sql

我正在使用proc sql查询来提取5个主题的id和标记。我想创建一个新列作为该id的最大标记。我试图使用以下查询。但它给出了语法错误。

proc sql;
select id, m1, m2,m3,m4,m5, max(m1-m5) as max_marks from data1;
quit;

3 个答案:

答案 0 :(得分:1)

我认为你可以使用largest()

proc sql;
    select id, m1, m2, m3, m4, m5,
           largest(m1, m2, m3, m4, m5) as max_marks
    from data1;
quit;

如果不在proc sql,您绝对可以通过数据步骤执行此操作。

答案 1 :(得分:0)

正如@Gordon指出的那样,如果你发布你得到的语法错误会更容易。帖子中的语法是正确的,但它正在做的是从m1中减去m5并取出该值的最大值,显然不是想要的。

要使用快捷键-获取变量的最大值,您需要添加关键字of

max(of m1-m5)

*请注意,此方法仅适用于数据步骤,不使用proc sql *

答案 2 :(得分:0)

将变量列表传递给函数的语法是错误的。要将变量列表传递给SAS中的函数,您需要使用of关键字。 MAX(of m1-m5)

您的代码实际上是在计算M1和M5之间的差异,因为MAX()只有一个参数,SAS认为这是对SQL聚合函数MAX()的调用,而不是对SAS函数的调用{{1找到两个或多个数字的最大值。

您无法在PROC SQL中使用变量列表,因此您需要列出各个变量。

MAX(,)