7943 13

[问答] 将excel导入sas中日期被转换成了具体数值怎么破 [推广有奖]

11
小宝爱波1314 发表于 2018-8-7 13:39:01
whymath 发表于 2018-8-4 22:54
该选项对 dbms=excel | xls 皆可用,请参见SAS帮助手册。
转成xls格式试了一下,还是不行。因为这列有的日期是un-un-2016这种格式

12
whymath 发表于 2018-8-7 21:27:59
小宝爱波1314 发表于 2018-8-7 13:29
我是excel2010,xslx的格式,所以没办法用了
那么请增加这两个语句:
     USEDATE=NO;
     SCANTIME=NO;
应该可以解决你的问题。

但它们的作用也仅限于此,如果真的是希望“所见即所得”,还是得用mixed语句。

13
赵安豆 发表于 2024-10-23 18:15:36
在SAS中,从Excel导入的日期通常被转换为内部的日期数值格式。这个数值实际上代表了自1960年1月1日以来经过的天数(对于SAS而言)。要将这种数值形式转换成更直观的日期格式,你可以使用SAS的`DATE.`, `DATETIME.` 或者 `MMDDYY10.` 等内置日期格式。

以下是步骤和代码示例:

### 步骤 1: 导入数据
你已经导入了Excel文件,并将日期列作为数值形式读取。假设你的日期列名为DateCol。

### 步骤 2: 使用SAS日期格式显示
在数据步或PROC中使用`PUT`语句或者直接在数据集中指定格式,这样可以将日期从内部数值格式转换为可读的字符串格式。

#### 示例代码:
```sas
data great.data;
    set great.data; /* 假设great.data是你的原始数据集 */
    format DateCol mmddyy10.; /* 使用MMDDYY10.格式显示,也可以选择其他的SAS日期格式 */
run;
```

### 步骤 3: 验证
你可以在数据集中查看`DateCol`字段是否已经按`mm/dd/yyyy`(或所选的其他日期格式)正确显示。

如果你希望在导入时就直接以正确的日期格式存储数据,可以考虑使用以下代码修改你的导入过程:
```sas
proc import out= great.data
     datafile= "e:\001.xls"
     dbms=xls replace;
   getnames=yes;
   sheet="Sheet1"; /* 如果有多个sheet,请指定 */
   columns=(... DateCol format=mmddyy10. ...); /* 在导入时直接指定日期格式 */
run;
```
在`columns=`选项中,将需要的列名后跟上`format=`和所选的日期格式。这会确保数据以正确的格式读入。

希望以上信息对你有帮助!如果还有其他问题或需要更详细的解答,请随时提问。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



14
jg.sas 发表于 2024-11-12 14:46:56
小宝爱波1314 发表于 2018-8-2 18:55
如果excel有100个tab,每个tab里面有七八个日期,每个日期的变量名都没什么规律可循,这些日期之间还要互 ...
从本质上解决问题就是,excel里设置单元格类型为文本

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-22 04:37