SAS数据在未排序的数据上按变量递增

SAS数据在未排序的数据上按变量递增,sas,datastep,Sas,Datastep,我在执行死刑。当数据按键排序时,我理解输出(在我的例子中是X)。但是,当数据未排序时,我得到以下输出: 我正在使用的是来自

我在执行死刑。当数据按键排序时,我理解输出(在我的例子中是
X
)。但是,当数据未排序时,我得到以下输出:

我正在使用的是来自
非洲
数据集,它有52824行这是指向CSV文件的链接

data  AFRICA_NEW12;
set Maps.AFRICA;
by X;
firstX = FIRST.X;
lastX = LAST.X;
run;

我不明白数据未排序时如何选择行。为什么输出有14行?

您的日志中有一个错误,因为您没有对其进行排序。一定要看你的日志

这可能会给您带来同样的问题:

data cars;
set sashelp.cars;
by model;
run;

proc print data=cars;
var make model origin;
run;
输出为:

Obs Make    Model   Origin
1   Acura   MDX Asia
2   Acura   RSX Type S 2dr  Asia
日志显示:

 ERROR: BY variables are not properly sorted on data set SASHELP.CARS.
 Make=Acura Model=TSX 4dr Type=Sedan Origin=Asia DriveTrain=Front MSRP=$26,990 Invoice=$24,647 EngineSize=2.4 Cylinders=4
 Horsepower=200 MPG_City=22 MPG_Highway=29 Weight=3230 Wheelbase=105 Length=183 FIRST.Model=1 LAST.Model=1 _ERROR_=1 _N_=3
 NOTE: The SAS System stopped processing this step because of errors.
 NOTE: There were 4 observations read from the data set SASHELP.CARS.
 WARNING: The data set WORK.CARS may be incomplete.  When this step was stopped there were 2 observations and 15 variables.
 WARNING: Data set WORK.CARS was not replaced because this step was stopped.
请特别注意这一部分:

警告:数据集工作。车辆可能不完整。当该步骤停止时,有2个观察值和15个变量。

如果您知道数据是按您想要的顺序排序的,这可能与SAS期望的顺序不同,您可以添加
notsorted
,但这是一种不同类型的功能,因此请彻底检查您的代码

data cars;
set sashelp.cars;
by model notsorted;
run;

您的代码不会过滤数据集。这里发生的任何事情都是由于前面的步骤或未显示的内容。请检查日志。如果将BY与未排序的数据集一起使用,将生成一个错误,并且一旦遇到第一条打破BY记录的记录,该步骤将被截断。感谢您的详细解释!顺便问一下,SAS如何决定何时停止?您能提供一个链接或简要描述吗?它会在第一条记录上停止,但不满足BY条件。我不确定具体在哪里说明,但BY说明在这里有记录