Преобразование даты в строку в шаге данных SAS monyy5.до yymmn6 - PullRequest
0 голосов
/ 23 января 2019

В SAS EG на шаге данных я пытаюсь преобразовать дату в строку в следующих форматах:

JUN18 до '201806'

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

data date;
length b $6;
b='201806';
new_b=input(b, yymmn6.);
format new_b monyy5.;

В результате new_b = JUN18. Я попробовал противоположное направление и что-то не так, и я не могу понять, что мне не хватает. Кто-нибудь знает, как преобразовать эти типы данных?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Используйте функцию PUT или PUTN для преобразования значения даты SAS в строку, содержащую представление даты.

data _null_;

  mydate = '18JUN2018'D;  
  * variable is numeric and contains a SAS date value;

  format mydate monyy.; 
  * variable given a format that is used when value is output (PROC rendered or PUT);

  put mydate=;  
  * the LOG will show JUN18, mydate is still a numeric holding a SAS date value;

  mydate_str = put (mydate, yymmN.);  
  * put returns the formatted value using yymmN representation of the data value;
  * yymmN format is different than monyy format associated with the variable,
  * and thus this is the 'conversion';

  put mydate_str=; 
  * the LOG will show 201806, mydate_str is a $6 variable and can not be used in date value computations;

run;

Функцию VVALUE можно использовать для получения отформатированного значения (представление значения данных в символьной строке) переменной с использованием ее атрибута текущего формата.

  length my_date_formatted_str $10;
  mydate_formatted_str = vvalue(mydate);
  put mydate_formatted_str=;
0 голосов
/ 23 января 2019

Вам нужно переключить свои форматы и информацию.В функции INPUT вы задаете формат, в котором ваши данные выглядят, в данном случае, monyy5, а затем формат - это то, как вы хотите, чтобы ваши данные выглядели, в данном случае, YYMMN6.

Переключение их - это все, что вам нужнонужно.

data date;
length b $6;
b='Jun18';
new_b=input(b, monyy5.);
format new_b yymmn6.;
run;
...