【问题标题】:sas insert blank raw into null datasetsas 将空白原始数据插入空数据集
【发布时间】:2016-05-25 16:22:05
【问题描述】:

我有一个空数据集,例如

a b c d

我想插入一条空白记录作为第一条也是唯一一条记录。我尝试了每一个想法,但没有工作。

【问题讨论】:

  • 您打算如何处理包含一个空白行的空数据集?您想要一个也适用于非空数据集的解决方案吗?

标签: sas blank-line


【解决方案1】:

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

data have;
  a=.;
  b=.;
  stop;
run;

?如果是这样,那么下面将创建一个具有相同变量的 1 记录数据集,并且所有值都缺失:

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

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

【讨论】:

  • 是的,完全正确。非常感谢!
  • 或许值得一提的是,您必须这样做,以及为什么data want; set have; run; 不起作用。
  • 您不需要output;stop; 语句。 SAS 足够聪明,可以注意到您不再读取任何新输入,并在写入第一条记录后停止。
  • True @Tom,但我将“数据步因循环而停止”注释视为错误消息,因此我喜欢显式停止。然后需要明确的 OUTPUT。
  • 我认为stop 也是必不可少的。
【解决方案2】:

这是一种使用数据集选项的方法。在源数据集上使用 OBS=0 获取变量定义,在其他数据集(如 SASHELP.CLASS)上使用 OBS=1DROP=_ALL_ 获取一个观察结果,但没有其他变量。

data want ;
  set have(obs=0) sashelp.class(obs=1 drop=_all_);
run;

如果您需要从头开始定义它,那么只需运行一个定义变量的数据步骤,但不执行其他任何操作。 SAS 会自动写入一条记录。

data want ;
  length a b 8;
run;

如果您不喜欢关于未初始化变量的说明,请添加一两个 ARRAY 语句。字符变量和数值变量各一个。

array _num _numeric_;
array _char_ _character_;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2019-05-01
    • 2013-09-19
    • 1970-01-01
    相关资源
    最近更新 更多