SAS / SQL文本文件读取

时间:2018-07-31 17:21:57

标签: sql database import sas

我希望将“ .txt”文件上传到SAS,以便可以在内容中搜索特定的字符和单词以进行分析。有问题的文本文件格式不正确,因此理想情况下将每一列作为一个新的观察词,例如:

   TEXT
1  Hello
2  World

目前,我正在将该文件下载到SAS中,但是空间很大,每次观察都有多个单词。

data mylib.textimport;
   infile "../TEXTTEST.txt" dlm="' ', ',', '.'";
   input __text__ $char300. ;
run;

有人可以帮助我将每个新词放入新列吗?

先谢谢了。 :)

2 个答案:

答案 0 :(得分:2)

如果要“逐字读取”文件,则只需告诉SAS您认为哪些字符是定界符,然后使用FLOWOVER选项读取字即可。因此,如果您想将空格,逗号,句号,引号,制表符,换行符和回车符视为字分隔符,则程序应如下所示。

data want;
  dlm=' ,."''' || '090A0D'x;
  infile "../TEXTTEST.txt" dlm=dlm flowover;
  length word $300 ;
  input word @@ ;
run;

答案 1 :(得分:1)

我会TRANSLATE将想要的字符放入空格,然后循环遍历其余字符,输出每个单词。

这里有一些测试数据

data have;
format line $200.;
input ;
line = _infile_;
datalines;
This is some, test.text
How,about,this cheesey.cheese?
;
run;

这是一个数据步骤,用于遍历并输出您要查找的内容:

data want(keep=word);
format word $200.;
set have;
line = translate(line,"  ",",."); /*convert , and . to space*/

n = countw(line);

/*Loop through the words and output*/
do i=1 to n;
    word = scan(line,i);
    output;
end;
run;

TRANSLATE将第三个参数中的字符转换为第二个字符中的字符。该字符串作为数组。它将替换数组中的每个值。

如本例所示,您可能想考虑其他标点符号。