Чтение текстовых файлов SAS / SQL

Я хочу загрузить файл «.txt» в SAS, чтобы я мог искать в содержимом определенные символы и слова для анализа. Рассматриваемый текстовый файл плохо отформатирован, поэтому в идеале было бы иметь один столбец, в котором каждое слово было бы новым наблюдением, например:

   TEXT
1  Hello
2  World

В настоящее время я загружаю файл в SAS, но там много пробелов и несколько слов для каждого наблюдения.

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

Может ли кто-нибудь помочь мне поместить каждое новое слово в новую колонку?

Заранее спасибо. :)

Какое отношение этот вопрос имеет к SQL?

Tom 01.08.2018 00:49

Что вы имеете в виду под «помещением слов в столбцы»?

Tom 01.08.2018 19:03
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
195
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я бы записал символы, которые вы хотите, в пробелы, а затем перебрал бы оставшиеся, выводя каждое слово.

Вот некоторые тестовые данные

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

Вот шаг DATA для просмотра и вывода того, что вы ищете:

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 преобразует символы третьего аргумента в символы второго. Это строки как массива. Он выполняет эту замену для каждого значения в массиве.

Как показывает этот пример, вы, вероятно, захотите подумать о других знаках препинания.

Если вы хотите прочитать файл «слово за словом», просто сообщите SAS, какие символы вы считаете разделителями, и используйте опцию FLOWOVER для чтения слов. Итак, если вы хотите рассматривать пробелы, запятые, точки, кавычки, табуляции, переводы строк и возврат каретки как разделители слов, ваша программа могла бы выглядеть так.

data want;
  dlm=' ,."''' || '090A0D'x;
  infile "../TEXTTEST.txt" dlm=dlm flowover;
  length word $300 ;
  input word @@ ;
run;
flowover - это поведение infile по умолчанию, поэтому оно также работает без его явного указания.
user667489 01.08.2018 17:20

Другие вопросы по теме