2016-10-25 95 views
0

我有一个文本文件,需要在SAS中导入注释。 文本文件看起来像这样在SAS中导入txt文件

# DATA1 
# 
# -- 
#  
ID nbmiss x1 x2 x3 x4 
1 1   45 38 47 
2 0  37 45 39 51 
3 3     58 
4 4    
5 0  68 45 73 76 
6 2    52 48 

我在SAS的输出必须是这样的

Obs x1 x2 x3 x4 
1 . 45 38 47 
2 37 45 39 51 
3 . . . 58 
4 . . . . 
5 68 45 73 76 
6 . . 52 48 

这里是我做的。它给了我我想找的东西,但它很长。我认为有一个更简单的方法。

proc import datafile= 'Z:\bloc1data\data\data1.txt' 
      out=class 
      dbms=dlm 
      replace; 
     datarow=6; 
    delimiter='09'x; 
run; 
proc print data = work.class label; 
var VAR3 VAR4 VAR5 VAR6; 
label VAR3='x1' VAR4='x2' VAR5='x3' VAR6='x4'; 
run; 

我的问题是如何以简化的方式有相同的输出?

谢谢你的时间。

回答

0

这是在做进口的部分:

proc import datafile= 'Z:\bloc1data\data\data1.txt' 
      out=class 
      dbms=dlm 
      replace; 
     datarow=6; 
    delimiter='09'x; 
run; 

这似乎太短了我。四行实际代码,大约一百个字符......数据步骤中的等效代码基本相同。

data want; 
    infile 'z:\bloc1data\data\data1.txt' dlm='09'x dsd firstobs=6; 
    input id nbmiss x1 x2 x3 x4; 
run; 

该文件不幸地不自动地确定名称(否则你可以做)。 DBMS = DLM没有namerow选项来告诉它在哪里选择名称,因此您需要预处理该文件以删除多余的行来执行此操作。欢迎您作为一个单独的问题提出如何去做,但这并不比上述“简单”(尽管它可能是“更好”)。