【问题标题】:how to convert char date to sas date , tried many ways.如何将 char date 转换为 sas date ,尝试了很多方法。
【发布时间】:2015-01-08 15:51:43
【问题描述】:

我有一个数据在一个列中,它混合了所有数据类型和格式。

文本、数字和日期。 我必须将列转置为行。 当我将数据导入 sas 9.3 时,日期变成了数字(char 格式),并且在我尝试使用输入函数进行转换后,它没有给出正确的日期。 我得到的观察结果就像日期列中的 41172。 我该如何转换它?

【问题讨论】:

  • 你将不得不提供你所拥有的和你正在做什么的例子。像这样的数字听起来像 Excel 是数据源,它没有正确进入 SAS(Excel 使用这样的数字作为日期,1/1/1900 不是 1/1/1960),但你是甚至没有提供那个细节。
  • 这与您之前的问题stackoverflow.com/questions/24762835/… 是否有效相同?
  • 41172 是 Excel 存储的方式 20september2012

标签: sas


【解决方案1】:

认为您混淆了数据类型和格式。这两种类型是字符和数字。

日期都是数字,并存储为 SASDATE,它是从 1960 年 1 月 1 日开始的偏移量,每一天代表 1。

要显示每个 SASDate,您必须将该变量格式化为日期(例如 date7、ddmmyy 等)。这意味着您首先需要使用输入函数将文本转换为数字 (SASDate),然后使用 put 函数将其格式化为您想要的格式。

如果您使用输入功能,您只需添加其中一种格式和一个 put 功能:

newvar=put(input(var,8.),date7.);

或者您可以将其保留为 input() 并使用它:

format var date7.;

在您的数据步骤中。

【讨论】:

  • 没有 $DATE 格式(虽然我同意存在一些混淆,但考虑到另一个问题,我认为这不是他的问题。)
  • 对不起,我指的是 date7。 .似乎在两者中都存在将日期存储为 sasdates 而不是显示为日期本身的混淆。
猜你喜欢
  • 1970-01-01
  • 2021-09-19
  • 2010-11-15
  • 1970-01-01
  • 2011-06-28
  • 2019-09-05
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多