如何在Sas中导入包含字符和数字的.txt

时间:2017-03-08 01:49:34

标签: import sas

我想在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;

但是,当我运行它时,我有很多" ......的数据无效;"然后我在SAS的表格中得到的数据非常少,而且很多都缺失了。

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

如何导入该类型的文件? 谢谢

1 个答案:

答案 0 :(得分:0)

文本文件没有任何内部数据类型。一切都是个性,直到您明确告诉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;

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