【问题标题】:Specify format with proc import sas使用 proc import sas 指定格式
【发布时间】:2018-11-21 12:59:19
【问题描述】:

我正在尝试将一些数据从 .txt 文件导入 WPS(适用于 SAS 语言)。一切都很完美,直到我意识到对于一列/变量,我的一些观察被削减了。例如在列/变量类型中,我在原始文件中的第 5 个观察结果是:

RAN
FG
MAJOFG
ARBA
ARBV

但在我的 sas 数据集中,这是我得到的数据:

RAN
FG
MAJ
ARB
ARB

所以我考虑在导入过程中使用一种格式来使 sas 始终占用 8 美元。格式。它可以与proc导入一起使用吗? 这是我的代码:

proc import out = sasuser.frais
  datafile="~/NAS/M/XXX.txt"
  dbms=dlm replace;
  delimiter=";";
  getnames=yes;
  datarow=2;
run;

我也尝试使用 data infile 但由于某种原因它移动了我的数据行(第二行的开头从第一行的结尾开始,可能是因为大多数时候我的最后 4 列/变量是空的)。而且我有 20 多个变量,其中大部分是由 sas 正确导入的(我的意思是格式方面),所以如果我可以避免为每个变量命名格式,那就太好了!

【问题讨论】:

  • 你可能会发现这个问题很有帮助communities.sas.com/t5/Base-SAS-Programming/…
  • 谢谢!确实有帮助!
  • 您真的对只有一个变量的文件使用 PROC IMPORT 吗?还是您只是显示导致问题的一个变量?

标签: import sas format dataset proc


【解决方案1】:

我的问题是我计划将此导入代码用于多个文件,并且类型的观察顺序是随机的。所以完全有可能对于 10 或 100 行,观察的长度为 3,然后观察的长度为 6。但即使我不知道顺序,我也知道可能的不同值(最大长度为 6) .所以猜测在我的情况下不起作用。但是我找到了一种使用 John Doe (https://communities.sas.com/t5/Base-SAS-Programming/Text-File-Import-force-the-correct-Informat-and-format/td-p/281701) 提供的链接来更正我的代码的方法 我获取了 proc 导入生成的数据,并针对需要更改的一个变量对其进行了修改。谢谢大家!

【讨论】:

    【解决方案2】:

    尝试使用GUESSINGROWS 语句:

    Proc IMPORT … ;
      …
      GUESSINGROWS = 100;
    run;
    

    当使用带有INPUT 语句的DATA 步骤并且某些行不完整时,您的INFILE 语句应指定MISSOVER 选项。这将帮助您创建一个数据集,其中每一行对应于数据文件的每一行。

      INFILE … FIRSTOBS=2 DLM=';' DSD MISSOVER;
      length v1-v20 $30;
      INPUT v1-v20;
    

    在数据步隐式循环步中,数据行末尾没有对应输入值的任何变量都将被设置为缺失,输入语句不会尝试在下一行查找更多值。

    【讨论】:

      【解决方案3】:

      您可以通过调整guessingrows 参数而不是指定信息来获得可接受的结果,例如:

      data _null_;
        file "%sysfunc(pathname(work))\test.txt";
        infile cards;
        input;
        put _infile_;
        cards;
      RAN
      FG
      MAJOFG
      ARBA
      ARBV
      ;
      run;
      
      proc import out = example
        datafile="%sysfunc(pathname(work))\test.txt"
        dbms=dlm replace;
        delimiter=";";
        getnames=yes;
        datarow=2;
        guessingrows=3;
      run;
      

      如果您将其从 3 更改为 2,则 proc import 在猜测变量 RAN 的适当长度时仅查看前 2 个数据行,并且对具有较长值的后续行进行截断。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        • 2020-11-09
        相关资源
        最近更新 更多