Форматирование в SAS для создания сегментов - PullRequest
0 голосов
/ 03 июля 2019

Я использую следующий код для хранения своей непрерывной переменной в SAS, но она не работает:

proc freq data = right;
  table Age;
run; 

proc format;
value AgeBuckets  
  low -<  74 = "Younger"
  75 -< 84 = "Older"
  85 - high = "Oldest"
run;

data right;
  format Age AgeBuckets.;
run;

Она удаляет все записи, поэтому у меня больше нет данных.Что я делаю не так?

Кроме того, возможно, было бы лучше просто создать новую переменную (версию с пакетом) из непрерывной с помощью операторов if / then?

Ответы [ 2 ]

2 голосов
/ 03 июля 2019

Вы просто не устанавливаете набор данных - скорее создаете новый.

data right;
  set right;
  format Age AgeBuckets.;
run;

proc print;
run;

Также вы исключаете возраст 74 и 84 из групп.Вы можете включить их также:

proc format;
value AgeBuckets  
  low -<  74 = "Younger"
  74 -< 84 = "Older"
  84 - high = "Oldest"
run;
0 голосов
/ 03 июля 2019
  1. Вы допустили ошибку на шаге данных, когда не указали входной файл, поскольку у вас нет оператора SET.
  2. Редко эффективнее использовать операторы IF / THEN
  3. Если вы хотите новую переменную, используйте PUT для ее преобразования, как показано здесь
  4. Программирование, где вы используетеОдно и то же имя для набора входных и выходных данных - плохая идея, из-за чего очень трудно найти ваши ошибки.

    proc format;
    value AgeBuckets  
      low  -< 75 = "Younger"
      75 -< 85 = "Older"
      85 - high = "Oldest"
    run;
    
    data right_formatted;
      set right;
      format Age AgeBuckets.;
      *create new variable with formatted value, will not sort correctly;
      Age_Formatted = put(age, ageBuckets.);
    run;
    

и:

   *applying a format means that it sorts correctly for display;
   proc freq data=right_formatted;
   table age age_formatted ;
   format age ageBuckets.;
   run;

@Python R Пользователь SAS также прав насчет ваших форматов.

...