Как перенести мои данные в SAS, наблюдая за шагом данных

У меня есть база данных sas с чем-то вроде этого:

id birthday Date1    Date2
1  12/4/01  12/4/13  12/3/14
2  12/3/01  12/6/13  12/2/14
3  12/9/01  12/4/03  12/9/14
4  12/8/13  12/3/14  12/10/16

И я хочу данные в этой форме:

id Date     Datetype
1  12/4/01  birthday  
1  12/4/13  1   
1  12/3/14  2    
2  12/3/01  birthday  
2  12/6/13  1
2  12/2/14  2
3  12/9/01  birthday
3  12/4/03  1
3  12/9/14  2
4  12/8/13  birthday
4  12/3/14  1
4  12/10/16 2

Спасибо твоей помощи, я на второй неделе использую sas <3 Edit: спасибо, оставайся мне, что я не нашел метод сортировки.

2 ответа

Добрый день. Следующее должно быть то, что вы после. Я не придумал простой способ переименовать столбцы, поскольку их нет в начальных данных.

   /*Data generation for ease of testing*/
    data begin; 
        input id birthday $ Date1 $ Date2 $; 
        cards;
    1  12/4/01  12/4/13  12/3/14
    2  12/3/01  12/6/13  12/2/14
    3  12/9/01  12/4/03  12/9/14
    4  12/8/13  12/3/14  12/10/16
    ; run; 

   /*The trick here is to use date: The colon means everything beginning with date, comparae with sql 'date%'*/
    proc transpose data= begin out=trans; 
        by id; 
        var birthday date: ; 
    run;

    /*Cleanup. Renaming the columns as you wanted.*/
    data trans;
        set trans;
        rename _NAME_= Datetype COL1= Date;
    run; 

Смотрите больше с сайта Кентского университета

Два шага

  • Поверните данные, используя Proc TRANSPOSE,
  • Измените имена выходных столбцов и их метки с помощью PROC DATASETS

Образец кода

proc transpose 
  data=have 
  out=want
    ( keep=id _label_ col1)
  ;
  by id;
  var birthday date1 date2;
  label birthday='birthday' date1='1' date2='2' ; * Trick to force values seen in pivot;
run;

proc datasets noprint lib=work;
  modify want;
  rename 
    _label_ = Datetype
    col1 = Date
  ;
  label
    Datetype = 'Datetype'
  ;
run;

Порядок столбцов в выходной таблице TRANSPOSE:

  • переменные id
  • копировать переменные
  • _name_ а также _label_
  • имена столбцов на основе данных

Образец 'want' показывает данные с именованными столбцами перед _label_ / _name_ колонны. Единственный способ изменить основной порядок столбцов - переписать набор данных. Вы можете изменить то, как этот порядок воспринимается при просмотре, используя дополнительное представление данных или выходной Proc, который позволяет вам указать конкретный требуемый порядок.

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