0

可以使用以下不同格式的日期值创建数据集吗?

29 JUN 66
July0100
19940421
4

2 回答 2

2

并不真地。或者更确切地说,这取决于您所说的不同格式的日期值是什么意思。

实际上,您可以将它们放入数据集的字符变量中。这没有问题,但它们基本上只是文本片段。

但我猜这不是你的意思。您不能将它们全部存储到具有不同格式的一个变量中的原因是我不相信您可以同时将多种格式应用于任何一个变量。

但是,您可以将其存储在多个变量中,每个变量都具有不同的格式。或者将其存储在一个变量中,然后在您实际需要使用它时应用三种不同的格式。

于 2013-05-04T09:48:07.963 回答
1

从您问题中的示例中,是的,您可以创建一个包含所有这些值的变量,但它必须是一个字符变量;这不是约会。如果您询问同一变量的不同观察值(行)是否可以具有不同的 SAS 格式,那么直接答案是“否”。

要理解的关键是 SAS 日期变量只是对应于自 1960 年 1 月 1 日以来的天数的数值。您可以使用各种不同的方式显示formatsSAS 日期。但是,aformat不会影响数据值本身。为了说明,运行这个程序,它使用三种不同的格式打印当前系统日期:

data _null_;
  today_is = today();

  put 'Using mmddyy10.: ' today_is mmddyy10.
    / 'Using yymmdd10.: ' today_is yymmdd10.
    / 'Using worddate.: ' today_is worddate.;
run;

为了进一步说明,以下是使用问题中的三种日期样式创建字符变量的示例:

data _null_;
   length your_column $13;

/* 29 JUN 66  Assuming June 29, 1966 */
   test_date = '29jun1966'd;
   your_column = put(day(test_date),z2.) || ' ' 
              || upcase(put(test_date,monname3.)) || ' ' 
              || put(test_date,year2.);   
   put test_date= @18 your_column=;

/* July0100   Assuming July 1, 2000 */
   test_date = '1jul2000'd; 
   your_column = put(test_date,monname.) || put(test_date,year.);
   put test_date= @18 your_column=;

/* 19940421   Assuming April 21, 1994 */
   test_date = '21apr1994'd;
   your_column = put(test_date,yymmddn8.);
   put test_date= @18 your_column=;
 run;

请注意,您问题中的前两个值没有自然的 SAS 格式。

于 2013-05-04T17:30:34.920 回答