sas将空白原始数据插入空数据集

sas将空白原始数据插入空数据集,sas,blank-line,Sas,Blank Line,我有一个空数据集,例如 a b c d 我想插入一条空白记录作为第一条也是唯一一条记录。我尝试了所有的想法,但没有奏效 当你说你有一个空数据集时,你是说它有0条记录,比如: data have; a=.; b=.; stop; run; ??如果是这样,则下面将创建一个具有相同变量且缺少所有值的单记录数据集: data want; if 0 then set have; output; stop; run; 如果为0,则设置为have语句用于将HAVE中的所有变量添

我有一个空数据集,例如

a b c d

我想插入一条空白记录作为第一条也是唯一一条记录。我尝试了所有的想法,但没有奏效

当你说你有一个空数据集时,你是说它有0条记录,比如:

data have;
  a=.;
  b=.;
  stop;
run;
??如果是这样,则下面将创建一个具有相同变量且缺少所有值的单记录数据集:

data want;
  if 0 then set have;
  output;
  stop;
run;

如果为0,则设置为have语句用于将HAVE中的所有变量添加到程序数据向量中,以便将它们输出到所需的位置。如果你有
设置
如果没有
if 0 then
部分,则当执行SET语句时,该步骤将停止,因为SAS将读取文件结尾标记。

当您说您有一个空数据集时,您的意思是它有0条记录,类似于:

data have;
  a=.;
  b=.;
  stop;
run;
??如果是这样,则下面将创建一个具有相同变量且缺少所有值的单记录数据集:

data want;
  if 0 then set have;
  output;
  stop;
run;

如果为0,则设置为have语句用于将HAVE中的所有变量添加到程序数据向量中,以便将它们输出到所需的位置。如果你有
设置
如果没有
if 0 then
部分,则在执行SET语句时,该步骤将停止,因为SAS将读取文件结尾标记。

以下是使用数据集选项的一种方法。在源数据集上使用
OBS=0
获取变量定义,在其他一些数据集(如SASHELP.CLASS)上使用
OBS=1
DROP=\u ALL
获取一个观察值,但不获取其他变量

data want ;
  set have(obs=0) sashelp.class(obs=1 drop=_all_);
run;
array _num _numeric_;
array _char_ _character_;
如果您需要从头开始定义它,那么只需运行定义变量的数据步骤,而不执行其他操作。SAS将自动写入一条记录

data want ;
  length a b 8;
run;
如果您不喜欢有关未初始化变量的注释,请添加一个或两个数组语句。字符和数字变量各一个

data want ;
  set have(obs=0) sashelp.class(obs=1 drop=_all_);
run;
array _num _numeric_;
array _char_ _character_;

下面是一种使用数据集选项的方法。在源数据集上使用
OBS=0
获取变量定义,在其他一些数据集(如SASHELP.CLASS)上使用
OBS=1
DROP=\u ALL
获取一个观察值,但不获取其他变量

data want ;
  set have(obs=0) sashelp.class(obs=1 drop=_all_);
run;
array _num _numeric_;
array _char_ _character_;
如果您需要从头开始定义它,那么只需运行定义变量的数据步骤,而不执行其他操作。SAS将自动写入一条记录

data want ;
  length a b 8;
run;
如果您不喜欢有关未初始化变量的注释,请添加一个或两个数组语句。字符和数字变量各一个

data want ;
  set have(obs=0) sashelp.class(obs=1 drop=_all_);
run;
array _num _numeric_;
array _char_ _character_;

您打算如何处理包含一个空行的空数据集?您想要一个同样适用于非空数据集的解决方案吗?对于一个只有一个空行的空数据集,您打算做什么?您想要一个同样适用于非空数据集的解决方案吗?是的,完全正确。非常感谢你!!也许值得一提的是,您必须这样做,以及为什么
需要数据;集有;运行无效。您不需要
输出;停止语句。SAS非常聪明,可以注意到您不再读取任何新输入,并在写入第一条记录后停止。True@Tom,但我将“由于循环而停止的数据步骤”注释视为错误消息,因此我喜欢显式停止。然后需要明确的输出。我认为<代码>停止/代码>也是必要的。是的,确切地说。非常感谢你!!也许值得一提的是,您必须这样做,以及为什么
需要数据;集有;运行无效。您不需要
输出;停止语句。SAS非常聪明,可以注意到您不再读取任何新输入,并在写入第一条记录后停止。True@Tom,但我将“由于循环而停止的数据步骤”注释视为错误消息,因此我喜欢显式停止。然后需要明确的输出。我认为<>代码>停止/代码>也是必要的。