Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 将SAS列转换为日期格式_Date_Sas - Fatal编程技术网

Date 将SAS列转换为日期格式

Date 将SAS列转换为日期格式,date,sas,Date,Sas,我在排行榜上有一列日期。格式如201301为2013年1月,201402为2014年2月 是否可以将此转换为日期9。格式 最后,我想写一个专栏,只写2013年、2014年、2015年、2016年等年份 我的主表名为file1,包含日期的列名为date1,我只想包含年份的列名为year1。 我试过: data file1; year1= date1 format year1 YEAR4. run; 但这并没有奏效。它给了我一个名为year1和dat

我在排行榜上有一列日期。格式如201301为2013年1月,201402为2014年2月

是否可以将此转换为日期9。格式

最后,我想写一个专栏,只写2013年、2014年、2015年、2016年等年份

我的主表名为file1,包含日期的列名为date1,我只想包含年份的列名为year1。 我试过:

     data file1;
       year1= date1
       format year1 YEAR4.
     run;

但这并没有奏效。它给了我一个名为year1和date1的两个空白单元格的输出。

这有点尴尬,因为您必须从数字转换为字符,然后再转换回来:

data _null_;
  mydate = 201301;
  mydate9 = input(put(mydate,6.),yymmn6.);
  format mydate9 date9.;
  put _all_;
run;

由于date1变量不是SAS日期,即您只有代表2013年1月的数值201301,因此您应该能够使用一些数学函数,例如:

data want;
   set file1;
   year1 = int(date1/100);
run;

您应该首先检查它是否是6位数字,而不是yymmn6。日期格式。如果是yymmn6。格式您可以只添加格式year4。或日期。。与用户667589另有约定:

data test;
  format date1 year4.;
  set file1;
run;

data test2;
  format mydate9 date9. myyear year4.;
  mydate = 201301;
  mydate9 = input(put(mydate,6.),yymmn6.);
  myyear = mydate9;
run;

1由于201301中没有月日,您希望显示什么值?2请用您尝试过的内容更新问题。谢谢,欢迎光临。请提供一个最小、完整且可验证的示例。向我们展示您最近一次尝试的代码以及您被卡住的地方。并解释为什么结果不是你所期望的。编辑您的问题以包含代码,请不要将其添加到注释中,因为它可能无法阅读。最好是展示实际发生的事情,而不是描述你预期会发生的事情。可能会重复对模棱两可的道歉-我已经添加了更多信息。谢谢!我现在就试试这个!这在没有int的情况下对我有效,我插入了格式行格式year14。;四舍五入到最接近的while数。非常感谢。仅使用该格式将仅显示整数值,但变量仍保留2013.01 inc.小数位。您可以通过创建year2 unformatted并将其赋值为year1来看到这一点。int函数将删除小数部分。我在使用int时收到一个错误,但我将重试。非常感谢。