在SAS的PROC SQL中按Name分组报错,如何实现分组求和?
解决PROC SQL中GROUP BY NAME列报错的问题
嘿,这个报错其实很好理解——NAME是SAS的保留关键字,当你直接写GROUP BY name的时候,SAS会误以为你在调用这个关键字,而不是引用你数据集里的Name列,所以才会抛出这个错误。
给你几个简单的解决办法,随便选一个都能搞定:
方法1:用表别名明确指定列所属的表
给数据集p1起一个别名,通过别名来引用列,这样SAS就不会把name当成关键字了:
PROC SQL; SELECT t.name, SUM(t.order_value) AS Total_Spent FROM p1 AS t GROUP BY t.name; QUIT;
方法2:给列起非保留字别名,再GROUP BY别名
在SELECT里给name列换个非关键字的名字,比如Customer_Name,然后GROUP BY这个新别名,避开关键字冲突:
PROC SQL; SELECT name AS Customer_Name, SUM(order_value) AS Total_Spent FROM p1 GROUP BY Customer_Name; QUIT;
方法3:用带n后缀的双引号包裹保留字列名
SAS中可以用"列名"n的格式来引用作为保留字的列名,明确告诉SAS这是一个数据列:
PROC SQL; SELECT "Name"n, SUM("Order_Value"n) AS Total_Spent FROM p1 GROUP BY "Name"n; QUIT;
这三种方法都能让你得到想要的结果:
Name Total_Spent John 23 Mark 12
内容的提问来源于stack exchange,提问作者Tester_Y
相关产品推荐
相关产品推荐

