Как преобразовать значение даты SAS, скажем, 20 ноября 201 года в 20 ноября 2018 года - PullRequest
0 голосов
/ 02 января 2019

У меня есть значение даты в SAS, например 20NOV2018, в формате даты. Мне нужна функция SAS, которая может разделять DayMonthtYear с пробелами, например, 20 NOV 2018. Какая функция SAS может решить мою задачу?

Ответы [ 3 ]

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

Пока вы определяете переменную даты, вы можете использовать формат для изменения формата вашей переменной даты.Формат, который вы спросили, идет с mmddyyw.формат.Я бы посоветовал вам попробовать использовать mmddyyw.где w стоит от 2 до 10. пытаюсь mmddyy10.чтобы решить вашу проблему и получить вывод, как 01/02/2019.

Приветствие:)

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

если вы хотите отформатировать, то есть только для отображения, вам не следует изменять типы данных или если вы хотите изменить тип данных (тогда это уже не дата, а символьное значение), вы можете следовать за ответом @amir, этопрефект.в противном случае формат изображения может помочь отформатировать вашу дату.

 proc format;
picture mydate (default = 11)
low-high = '%0d %b %Y'(datatype=date);
run; 

data have;
input num_date:date9.;
format num_date mydate.;
datalines;
20NOV2018
09SEP2018
;

вывод составляет

Obs num_date
1   20 Nov 2018
2   09 Sep 2018
0 голосов
/ 02 января 2019

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

/* set up the SAS date required */
data have;
   format num_date date9.;
   input num_date date9.;
   datalines;
20NOV2018
;

/* create char_date1 and char_date2 with spaces in the date values */
data want;
   set have;
   char_date1 = catx(' '
                    ,day(num_date)
                    ,put(num_date,monname3.)
                    ,year(num_date)
                    );

   char_date2 = put(num_date,worddatx.);
run;
...