在发布之前,我尝试了Google,但没有提供太多帮助。
我在 Opened_DT
栏中有一个 Excel文件,此值为 1448300037,15 。 Excel仅显示一堆 ###### 字符而不是日期。
我收到了这个文件,不知道日期格式应该是什么实际输出。它应说明与机构开立帐户的日期。我需要将这个Excel列导入SAS
数据集,但这个字符串让我发疯:(我尝试了一堆转换实用程序和插件,但没有运气。
有人可以告诉我如何使用SAS阅读此专栏吗?
的示例答案 0 :(得分:3)
从您的示例中看,初始数据是错误的:这是Excel 2007向我展示的内容:
实际上,实际值太大而不能Date
- 今天的日期序列号为41335
。请确保您的应用程序正确计算Opening_DT
值。
根据Excel specifications and limits:
Latest date allowed for calculation December 31, 9999
Largest amount of time that can be entered 9999:59:59
December 31, 9999
的序列号为2958465
。
答案 1 :(得分:1)
在我看来,Excel工作表中的列是使用一些将小数点转换为逗号的技术创建的。引用的示例值( 1448300037,15 )相当于22NOV2005:17:33:57.15
的SAS时间戳。
如果该值是合法的并且您想将其转换为SAS数据集,我建议将该列格式化为Excel中的TEXT,将其另存为新工作簿,并使用PROC IMPORT将该新工作簿读入SAS。然后对结果进行后处理,以将该变量重新读取为SAS datetime变量。举例说明:
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;
numx
语句中使用的input
SAS信息读取字符变量并将逗号解释为小数点。
答案 2 :(得分:1)
我假设您的区域小数分隔符是逗号,所以1448300037,15是有效数字......
如果它代表从1960年1月1日开始的秒数,那么在Excel中您可以通过将开始日期(1960年1月1日)添加到您的数字表示为天数(您可以通过除以以下数字得到)来转换为有效日期/时间一天中的秒数,因此A2中的数据使用此公式
=DATE(1960,1,1)+A2/86400
并格式化为日期/时间,例如dd.mm.yyyy hh:mm
答案 3 :(得分:0)
使列宽更宽。如果数据不适合Excel,Excel有时会显示哈希值。