【问题标题】:SAS Variable is reading too many levels when inputting dataSAS 变量在输入数据时读取的级别过多
【发布时间】:2021-11-23 22:34:52
【问题描述】:

以下是我的代码:

/* Enter Data */
data leaf;
    input Delay Angle @@;
    cards;
    30 140  30 138  30 140  30 138  30 142
    45 140  45 150  45 120  45 128  45 130
    60 118  60 130  60 128  60 118  60 118
;
run;

/* Comparing All Delays */
proc glm data=leaf plots=diagnostics;
    class Delay;
    model Angle = Delay;
    means Delay / HOVtest=Levene;
    title "Comparison of All Delays";
run;

当我运行代码时,我收到以下信息:

我的问题是延迟变量应该只有 3 个级别,值为 30 45 60,但正如您所见,它读取的级别比它应该的要多。对我来说,数据看起来非常好,我不知道为什么它不能正确读取。非常感谢任何和所有帮助!

【问题讨论】:

  • 阅读 SAS 日志以查看您的数据步骤产生的错误/注释。

标签: database class variables input sas


【解决方案1】:

当复制并粘贴到 SAS 显示管理器编辑器窗口时,您的数据步骤仅产生三个不同的延迟值。

也许有一些非空格字符隐藏在那个“空白”空间中,导致 INPUT 语句不同步。

但是你为什么要缩进 CARDS 语句和行内数据的行呢?尝试像这样格式化您的代码以降低这样做的风险。

data leaf;
  input Delay Angle @@;
cards;
30 140  30 138  30 140  30 138  30 142
45 140  45 150  45 120  45 128  45 130
60 118  60 130  60 128  60 118  60 118
;

还要确保使用句点来表示任何缺失值。

【讨论】:

  • 这是我的问题。我需要我的数据步骤只为延迟生成 3 个值,但它目前正在生成 6 个值,如图所示。我尝试了您建议的格式,但没有解决任何问题,问题仍然存在。
  • 请勿在数据中使用制表符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多