4

在发布之前,我尝试了谷歌,但没有太多帮助。

我在列中有一个具有此值的Excel 文件Opened_DT1448300037,15。Excel 只显示一堆######字符而不是日期。

我已经得到了这个文件,但不知道日期格式应该是什么实际输出。它应该说明在机构开设账户的日期。我需要将此 Excel 列导入SAS数据集,但这个字符串让我发疯:(我尝试了一堆转换实用程序和插件,但没有运气。

有人可以告诉我如何使用 SAS 阅读本专栏吗?

这是我的 Excel 工作簿的示例

4

4 回答 4

3

从您的示例看来,初始数据是错误的:这是 Excel 2007 向我展示的:

来自 Excel 的屏幕截图

确实,实际值太大了Date——因为今天的日期序列号是41335。请确保您的应用程序计算正确的Opening_DT值。

根据Excel 规范和限制

Latest date allowed for calculation         December 31, 9999
Largest amount of time that can be entered  9999:59:59

序列号December 31, 99992958465.

于 2013-03-02T12:13:15.837 回答
1

在我看来,您的 Excel 工作表中的列是使用某种将小数点转换为逗号的技术创建的。引用的示例值 ( 1448300037,15 ) 相当于 SAS 时间戳22NOV2005:17:33:57.15

如果该值是合法的并且您想将其转换为 SAS 数据集,我建议在 Excel 中将该列格式化为 TEXT,将其保存为新工作簿,然后使用 PROC IMPORT 将该新工作簿读入 SAS。然后对结果进行后处理以将该变量重新读取为 SAS 日期时间变量。为了显示:

proc import out=have
            datafile="path-to-workbook\workbook.xlsx"
            replace
            dbms=excel;
     sheet="sheetname";
run;

data want;
   set have(rename=(Open_DT=prevOpen_DT));
   format Open_DT datetime21.2;
   Open_DT = input(prevOpen_DT,numx13.2);
   drop prevOpen_DT;
run;

语句中使用的numxSAS 信息input读取字符变量并将逗号解释为小数点。

于 2013-03-02T19:03:17.763 回答
1

我假设您所在地区的小数分隔符是逗号,所以 1448300037,15 是一个有效数字......

如果这表示从 1960 年 1 月 1 日开始的秒数,那么在 Excel 中,您可以通过将开始日期(1960 年 1 月 1 日)添加到以天数表示的数字(您可以通过除以一天中的秒数),因此对于 A2 中的数据,请使用此公式

=DATE(1960,1,1)+A2/86400

并格式化为日期/时间,例如dd.mm.yyyy hh:mm

于 2013-03-04T09:51:21.413 回答
0

使列宽更宽。如果数据不合适,Excel 有时会显示哈希值。

于 2013-03-02T11:17:10.743 回答