将数据从一行中的文本文件读入SAS

use*_*307 2 sas

我试图弄清楚如何读取由逗号分隔的文本文件(300mb)中的数据,但数据在一行中.

数据如下所示:

A,B,C,d,E,F,G,H,I,J,K,L,M,FALSE,FALSE,真实,1,379,0,1,1,1,1,1,1,0 ,1,0,6,0,6,0,6,6,6,6,6,6,6,6,6,0,6,0,0,0,0,0,0,0

这里A到M的数据是变量名,rest是这些变量的数据.谁能帮我把这些数据读进SAS?

非常感谢!

Joe*_*Joe 6

你最好的选择是用两遍来读它:一个行分界步骤和一个读取步骤.

我建议首先使用TERMSTR =","作为行,所以你有一个包含一个字段的大量行.然后找出你的行应该终止的位置,然后将它组成一行,输出到一个带有普通for-os行终止符的文件.

然后你可以用正常的readin方法读取它.

例如,假设我有一个这行文件:

A,B,C,d,E,F,1,2,3,4,5,6,7,8,9,10,11,12

然后我可以这样读它.

filename oneline "c:\temp\oneline.csv";
filename intermed temp;

%let numfields=6;

data _null_;
    infile oneline termstr=",";
    file intermed dlm=',';
    do _i = 1 to &numfields;
        input line $;
        putlog line;
        put line @;
    end;
    put;
run;

data want;
  infile intermed dlm=',' firstobs=2;
  input a b c d e f;
run;
Run Code Online (Sandbox Code Playgroud)

您还可以添加一些代码来解析第一行并将其放在宏变量或包含文件中,然后将其用于input在后面的数据步骤中生成行,但我将其留作读者练习.