Sas 是否可以在PROC导入中使用IF语句?

Sas 是否可以在PROC导入中使用IF语句?,sas,Sas,我正在使用PROC IMPORT导入Stata格式的数据集,但我也希望使用IF语句来创建一些新变量。但是,简单地使用这样的代码会返回错误180-322:语句无效或使用顺序不正确: PROC IMPORT DATAFILE = "myfile.dta" DBMS = DTA OUT = mydata REPLACE; IF close < 10 THEN val = "low"; ELSE val = "high"; RUN; 检查数据集表明它不包含任何原始

我正在使用PROC IMPORT导入Stata格式的数据集,但我也希望使用IF语句来创建一些新变量。但是,简单地使用这样的代码会返回错误180-322:语句无效或使用顺序不正确:

PROC IMPORT
    DATAFILE = "myfile.dta"
    DBMS = DTA
    OUT = mydata
    REPLACE;
IF close < 10 THEN val = "low";
ELSE val = "high";
RUN;

检查数据集表明它不包含任何原始数据

在SAS过程中永远不能使用IF。如果属于数据步骤

更新


在SAS过程中永远不能使用IF。如果属于数据步骤

更新


正如其他人所说,您不能在proc导入中使用if语句。通过将if放在后续的数据步骤中,您已经走上了正确的道路——您只是语法有点错误。应该是这样的:

close | val
      | high
DATA mydata2;    /* A NEW DATASET CALLED MYDATA2 WILL BE CREATED. NOTE THERE IS NO EQUALS SIGN */
    set mydata;  /* IT WILL BE BASED OFF THE MYDATA DATASET */
    IF close < 10 THEN val = "low";
    ELSE val = "high";
RUN;

正如其他人所说,您不能在proc导入中使用if语句。通过将if放在后续的数据步骤中,您已经走上了正确的道路——您只是语法有点错误。应该是这样的:

close | val
      | high
DATA mydata2;    /* A NEW DATASET CALLED MYDATA2 WILL BE CREATED. NOTE THERE IS NO EQUALS SIGN */
    set mydata;  /* IT WILL BE BASED OFF THE MYDATA DATASET */
    IF close < 10 THEN val = "low";
    ELSE val = "high";
RUN;

那么,在导入数据集时,是否没有创建新变量的方法?由于日志不显示任何生成的代码,我不能简单地复制生成的数据步骤并在那里使用IF语句,但我需要在导入数据集后创建新变量。您可以在数据步骤中进行填充,然后在同一数据步骤中应用IF。或者,在proc导入之后,您需要在新的数据步骤中运行if。您还可以运行导入向导,该向导将为您生成填充数据步骤。您能给我一个例子吗?我不知道如何使用infle读取Stata文件。好的,对不起,对于Stata文件,它是不可能的,因为它们没有分隔符,对于csv等,它可以工作。为什么在数据步骤中会出现这样的问题?对,我特别指的是Stata文件。我需要使用IF,因为我需要根据条件的结果创建一个新变量。在数据步骤中,使用DATA关键字和infle关键字的步骤,例如,我会使用IF语句来完成这项工作,但是由于我不能在PROC IMPORT中使用IF语句,所以我需要另一种方法。如果不在PROC IMPORT语句中,我将在何处创建新变量?那么,在导入数据集时,是否没有创建新变量的方法?由于日志不显示任何生成的代码,我不能简单地复制生成的数据步骤并在那里使用IF语句,但我需要在导入数据集后创建新变量。您可以在数据步骤中进行填充,然后在同一数据步骤中应用IF。或者,在proc导入之后,您需要在新的数据步骤中运行if。您还可以运行导入向导,该向导将为您生成填充数据步骤。您能给我一个例子吗?我不知道如何使用infle读取Stata文件。好的,对不起,对于Stata文件,它是不可能的,因为它们没有分隔符,对于csv等,它可以工作。为什么在数据步骤中会出现这样的问题?对,我特别指的是Stata文件。我需要使用IF,因为我需要根据条件的结果创建一个新变量。在数据步骤中,使用DATA关键字和infle关键字的步骤,例如,我会使用IF语句来完成这项工作,但是由于我不能在PROC IMPORT中使用IF语句,所以我需要另一种方法。如果不在PROC IMPORT语句中,我将在何处创建新变量?只需在PROC IMPORT之后立即执行数据步骤…@CarolinaJay65该数据步骤的结构如何?在那个数据步骤中我还需要一个infle语句吗?如果我只是将数据步骤与If语句放在一起,它似乎会删除数据请参见我的编辑。只需在proc导入后立即执行数据步骤…@CarolinaJay65该数据步骤的结构如何?在那个数据步骤中我还需要一个infle语句吗?如果我只是将数据步骤与If语句放在一起,它似乎会删除数据,请参见我的edit.Perfect。这正是我需要的。SET关键字是我在搜索文档时没有发现的,这是我自己的错误,而不是文档,我相信。完美。这正是我需要的。SET关键字是我在搜索文档时没有发现的,我确信这是我自己的错误,而不是文档。