【问题标题】:How to import .txt with characters and numbers in Sas如何在 Sas 中导入带有字符和数字的 .txt
【发布时间】:2017-03-08 13:17:36
【问题描述】:

我想在 SAS 中导入一个 .txt 文件。

这看起来像我的数据:

annee manufacturier modele categorie cylindree cylindres transmission ville ...
2016  Ford           Focus    1          1.8       5      Manual       10.1
2016  Toyota         Tercel   3          1.4       3      Auto         7.1

这是我的代码

data car; 
infile "C:\Users\Mark\Desktop\sas\car.txt" 
LRECL=10000000 DLM=" " firstobs=2 ;
input
annee manufacturier modele categorie cylindree cylindres transmission type ville route combine emissiond indice
;
run;

但是,当我运行它时,我有很多“Invalid data for ...”,然后我的 SAS 表中的数据非常少,而且很多缺失。

有些变量是数字,有些是字符。我觉得问题就在那里。

我怎样才能导入那种类型的文件? 谢谢

【问题讨论】:

    标签: import sas


    【解决方案1】:

    文本文件没有任何内在数据类型。一切都是字符,直到您明确告诉 SAS 您的列的数据类型。此外,有时您需要告诉 SAS 数据的输入格式或信息。

    有时 SAS 足够聪明,可以正确猜测:您的数据信息。例如,如果您删除 informat 语句,以下代码会生成相同的结果。但是,对于说日期来说,情况并非如此。一般来说,明确指定信息是最佳做法。

    如果您的数据是分隔的,例如 CSV,您可以使用 PROC IMPORT 来导入您的数据。使用 PROC IMPORT,SAS 将根据列的内容对数据类型做出最佳猜测(就像 Excel 在导入文本数据时所做的那样)。

    以下代码将导入您指定的数据:

    filename temp temp;
    data _null_;
       infile datalines;
       file temp;
       input;
       put _infile_;
       datalines;
    annee manufacturier modele categorie cylindree cylindres transmission ville
    2016  Ford           Focus    1          1.8       5      Manual       10.1
    2016  Toyota         Tercel   3          1.4       3      Auto         7.1
    run;
    
    data want;
       infile temp firstobs=2;
       length 
          annee             8
          manufacturier     $20
          modele            $20
          categorie         8
          cylindree         8
          cylindres         8
          transmission      $20
          ville             8
       ;
       informat
          cylindree         8.1
          ville             8.1
       ;
       input
          annee            
          manufacturier    
          modele           
          categorie        
          cylindree        
          cylindres        
          transmission     
          ville            
       ;
    run;
    

    如果您的数据包含空格,例如制造商 = Mercedes Benz,那么您还需要为该列使用信息(例如 $char20.)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多