Генерация множества таблиц из одной таблицы в SAS - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть таблица в SAS, которая содержит информацию о формате, которую я хочу.Я хочу связать эти данные с данными категориями.

То, что я не знаю, как это сделать, - это создать xform или файл формата из данных.

Пример таблицы выглядит следующим образом:

     TxtLabel  Type FmtName label   Hlo count
         .      I   FAC1f    0      O    1
        1996    I   FAC1f    1           2
        1997    I   FAC1f    2           3

Я хочу датировать все годы в другом наборе данных, как после 1997 года ИЛИ до 1996 года.

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

Как мне объединить данные, используя столбец из другого набора данных для моей классификации?

Редактировать

У меня есть два набора данных, один из которых выглядит как тот, который я включил, а другой имеет столбец с заголовком «ГОД».Я хочу скопировать второй набор данных, используя категории из первого.В этом случае в TxtLabel есть два доступных года.Подобных таблиц несколько, я смотрю, как генерировать код формата PROC из таблицы, а не жестко кодировать значения.

1 Ответ

0 голосов
/ 26 сентября 2018

Это должно быть выполнено для создания желаемого формата

Proc FORMAT CNTLIN=MyCustomFormatControlData;
run;

Затем вы можете использовать его на шаге DATA или применить к столбцу в наборе данных.

Объединение данныхможет быть истолковано как «разделение набора данных», но ваш вопрос не проясняет, если это так.Обычное произвольное разбиение часто выполняется с помощью одного из следующих методов:

  • исходный код обоев, разрешенный из макропеременных, заполненных информацией, собранной в Proc SQL или Proc FREQ шаг
  • динамическийразделение данных с использованием объекта hash для группировки записей в памяти и сохранение в набор данных с помощью вызова .output().

Пример кода для явного биннинга

data want0 want1 want2 want3 want4 want5 wantOther;
  set have;
  * explicit wall paper;
  select (put(year,FAC1f.));
    when ('0') output want0;
    when ('1') output want1;
    when ('2') output want2;
    when ('3') output want3;
    when ('4') output want4;
    when ('5') output want5;
    otherwise output wantOther;
run;

Thisявляется структурой, которую может генерировать исходный код, сгенерированный макросом, и требует

  • один проход для определения when/output строк, которые должны быть сгенерированы
  • второй проход для применения строккода, который был сгенерирован.

Если вы пытаетесь обработать данные:

  • проведите некоторое исследование (достаточно информации)
  • напишите код
  • задайте новый вопрос, если вы получите ошибки, которые не можете устранить

ФОРМАТ ПРОЦЕССА

Proc FORMAT имеет CNTLIN параметр для указания датынабор, содержащий информацию о формате.Структура и значения, ожидаемые от набора данных управления вводом (то есть CNTLIN), описаны в документации набора данных управления выводом .Вот некоторые из важных столбцов управляющих данных:

FMTNAME
указывает символьную переменную, значением которой является имя формата или имени.

LABEL
указывает символьную переменную, чьязначение связано с форматом или информатом.

START
указывает символьную переменную, которая задает начальное значение диапазона.

END
определяет символьную переменную, которая задает конечное значение диапазона.

Поскольку требования к пользовательскому формату, который будет создан, становятся более сложными, вам потребуется больше информационных переменных в наборе входных управляющих данных.

...