为什么我的输出文件包含填充了我的数据集变量的神秘的额外列?

时间:2017-04-06 22:51:51

标签: sas ascii

这真的很奇怪,但我希望你能提供帮助。我在SAS 9.3的DATA步骤中使用FILE语句来导入其他人的SPSS文件,这样我就可以重新编码并创建一些变量,然后输出一个文件。我没有运气INFILE,所以我使用PROC IMPORT,然后将数据翻译成txt格式。

proc import datafile = 'C:\file.sav'
    out = work.master_A
    dbms = sav
    replace;
run;

data work.master_B;
    file 'C:\file.txt'
        delimiter = '09'x
        dsd
        dropover
        lrecl = 32767;

    put
        'animal' '09'x
        'vegetable' '09'x
        'mineral' '09'x

    set  work.master_A;

        format animal $11.;
        format vegetable $10.;
        format mineral $8.;

        put animal @;
        put vegetable $ @;
        put mineral @;

run;

我知道这应该是一项非常简单的任务。但是,无论我指定哪种类型的输出文件(.txt,.csv),输出文件都包含其他列。这些列没有变量名称/标题。但是,列单元格中填充了数据列的名称。

例如,如果我的原始数据是: 动物蔬菜矿物 猫西兰花石英 狗芦笋钻石 鸟榕页岩

输出数据是: 动物蔬菜矿物 猫西兰花石英动物植物矿物动植物矿物 狗芦笋钻石动物植物矿物动物植物矿物 鸟榕页岩动物植物矿物动植物矿物

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的IMPORT步骤看起来很好。您尚未尝试转换任何变量,因此请假设您已正确执行此操作。

您描述的问题听起来像是由于为输入数据集的每次观察重写标题而引起的。您需要将其限制为仅在数据步骤的第一次迭代中写入标题。

data _null_;
  file 'C:\file.txt' dsd dlm='09'x;
  if _n_=1 then put
    'animal' '09'x
    'vegetable' '09'x
    'mineral' 
  ;
  set master_A;
  put animal vegetable mineral;
run;

您可以使用PROC EXPORT编写分隔文件。

proc export data=master_A outfile='c:\file.txt' dbms=dlm;
  delimiter='09'x;
run;

如果您想将其限制为这三列,您可以使用KEEP = dataset选项。

proc export data=master_A(keep=animal vegetable mineral) outfile='c:\file.txt' dbms=dlm;
  delimiter='09'x;
run;