Преобразование в дату5. формат в SAS - PullRequest
0 голосов
/ 01 октября 2019

У меня есть столбец со смешанными значениями месяца и даты (в формате символа $ 5). date 7/23 5/23 23MAR 7/19

Я хочу, чтобы данные поступали как единая дата5. такой формат

date 23MAR 23MAY 23MAR 19JUL.

Вот код, который я использую

data DAte_check4again;
 set Date_2test;
  format check_dt date5.;
  check_dt=datepart(date);
  run;

1 Ответ

0 голосов
/ 01 октября 2019

SAS хранит значения DATE, TIME и DATETIME в виде чисел. Функция DATEPART (), которую вы пытаетесь использовать, предназначена для преобразования значений DATETIME в значения DATE. Но ваша исходная переменная является символом длиной 5. (ФОРМАТЫ - это просто инструкции о том, как отображать значения).

Таким образом, вашей первой проблемой будет преобразование строки в значение DATE. Затем вы можете взять первые 5 символов ДАТЫ. отформатируйте и сохраните его в исходной переменной или в другой переменной. Предполагая, что значения месяца / дня относятся к текущему году, и у вас есть только эти два стиля строк, это один из способов создания даты, а также строка из 5 символов.

data want;
  set have ;
  if index(date,'/') then date_ck = input(cats(date,'/',year(today())),mmmddyy10.);
  else date_ck = input(cats(date,year(today())),date9.);
  format date_ck date9.;
  new_date = substr(put(date_ck,date9.),1,5);
run;
...