SAS/SQL文本文件读取



我想上传一个".txt"文件到SAS,这样我就可以在内容中搜索要分析的特定字符和单词。有问题的文本文件格式不好,因此理想情况下,每个单词都有一列新的观察结果,如:

TEXT
1  Hello
2  World

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

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

有人能帮我把每个新词都放进一个新专栏吗?

提前感谢。:(

如果您想"逐字逐句"地读取文件,那么只需告诉SAS您认为哪些字符是分隔符,并使用FLOWEVER选项读取这些单词。因此,如果您想将空格、逗号、句点、引号、制表符、换行符和回车符视为单词分隔符,您的程序可能是这样的。

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

我会将您想要的字符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将第三个变元中的字符转换为第二个变元的字符。这是作为数组的字符串。它对数组中的每个值进行替换。

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

最新更新