Logic 我想根据SAS中的条件语句输出特定的观察结果

Logic 我想根据SAS中的条件语句输出特定的观察结果,logic,sas,Logic,Sas,下面是我的代码。我希望author=known,如果它是下面列出的论文之一,我希望author等于一个字符值,该字符值等于相应的论文编号,如果它不是下面列出的论文之一。完成后,我想将观察结果输出到两个不同的数据集。如果作者是已知的,我想输出到Knownautor;如果作者是未知的,我想输出到Unknownautor。我完全卡住了。任何帮助都将不胜感激 data knownauthor unknownauthor; set t_wordlist_summary; if pa

下面是我的代码。我希望author=known,如果它是下面列出的论文之一,我希望author等于一个字符值,该字符值等于相应的论文编号,如果它不是下面列出的论文之一。完成后,我想将观察结果输出到两个不同的数据集。如果作者是已知的,我想输出到Knownautor;如果作者是未知的,我想输出到Unknownautor。我完全卡住了。任何帮助都将不胜感激

data knownauthor unknownauthor;
    set t_wordlist_summary;
        if paper=1-17 or paper=21-48 or paper=59-61 or paper=64-85 then author="known";
        else author=input(paper, 2.);
        if author="known" then output knownauthor;
        else output unknownauthor;

在这里,我创建了新的数据线。并根据您的详细信息进行编码

数据更新; 输入纸; 卡; 1. 2. 3. 4. 5. 6. 7. 8. 9 10 11 12 13 14 15 16 17 18 19 20 ;

已知数据未知; 创新; 如果1 le纸张le 3或5 le纸张le 9,则执行该操作; 作者=“知道”; 输出已知; 结束

否则你会; 作者=压缩(放(纸,最好); 输出未知; 结束;
运行

您的条件表达式

if paper=1-17 or paper=21-48 or paper=59-61 or paper=64-85
看起来不对。现在,如果paper=-16或paper=-27或paper=-2或paper=-21,它实际上相当于条件
,这显然不是你的意思,对吧?。你需要把它重写为

1<=paper<=17 or 21<=paper<=48 or 59<=paper<=61 or 64<=paper<=85

1这看起来很好。运行时会发生什么?它会将我所有的观察结果转储到“Unknownautor”数据集中。而且它也不会给指定的文件指定一个“已知”值。在“Unknownautor”数据集中,author的值显示为缺少的值。这是SAS专门写入日志的内容:注意:数值已在以下位置转换为字符值:(行):(列)。130:13 130:19注:从数据集WORK.T_单词列表_摘要中读取了85个观察结果。注:数据集WORK.KNOWNAUTOR有0个观测值和32个变量。注:数据集WORK.UNKNOWNAUTOR有85个观测值和32个变量。注:使用的数据语句(总处理时间):实时0.03秒cpu时间0.01秒