【问题标题】:DATASET IS NOT AN OBJECT,how do i go about this error数据集不是对象,我该如何解决这个错误
【发布时间】:2023-02-06 22:34:43
【问题描述】:

我的代码有什么问题?

69         data train2.sacked; 
70                train2.payrise; 
71           set train2.exam (drop = test1 test2 test3 test4); 
72           mean2 = mean(test1, test2, test3, test4); 
73           if mean2 > 5 then 
74                     do 
75         result = 'PASS' 
76         action = 'Pay rise' 
77         output payrise; 
78   
79           if mean2 <= 5 then 
80                      do 
81                         result = 'LOSER' 
82         action = 'SACKED' 
83         output sacked; 
84   
85           else do 
86                          result = 'What have I done?' 
87          action = 'PARTY' 
88          output aahhhhh; 
89            length lname fname $ 40 result $ 20; 
90         run;

我尝试运行代码,但它给了我错误。

ERROR: DATA STEP Component Object failure.  Aborted during the COMPILATION phase.
ERROR 557-185: Variable train2 is not an object.

【问题讨论】:

  • 第一个问题是您似乎没有以必需的分号 (;) 结束每个语句。错误可能是由您未显示的数据语句之前的代码引起的,并且解析器由于格式错误的语句而将事物混在一起。

标签: if-statement variables sas output datastep


【解决方案1】:

错误来自第二个语句。

train2.payrise; 

SAS 认为您正在尝试引用名为 TRAIN2 的对象的方法,但数据步骤尚未定义此类对象(数据步骤中的对象示例是 HASH)。我怀疑您的意思是将其作为包含在 DATA 语句中的数据集,但 DATA 语句中间有一个额外的分号。

您程序的其余部分也有很多错误。

  • 语句末尾缺少很多分号。
  • 您的 OUTPUT 语句正在尝试写入 DATA 语句中未列出的数据集。
  • 您正在尝试获取您明确告诉 SAS 不要加载的变量的 MEAN()。
  • 您正在尝试在数据步骤结束时设置字符变量的长度。因此,要么存在变量,要么已经设置了它们的长度,因此更改长度的尝试将失败。或者,由于没有代码可以为它们分配任何值,因此将使用所有缺失值创建变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 2016-09-09
    • 2020-07-25
    • 2021-11-03
    • 2020-03-08
    相关资源
    最近更新 更多