楼主: sduruc
5047 2

【求教SAS日期格式】 [推广有奖]

  • 7关注
  • 23粉丝

已卖:3419份资源

学科带头人

71%

还不是VIP/贵宾

-

威望
0
论坛币
8283 个
通用积分
20.2860
学术水平
29 点
热心指数
40 点
信用等级
31 点
经验
98263 点
帖子
592
精华
0
在线时间
4068 小时
注册时间
2011-9-24
最后登录
2025-11-20

楼主
sduruc 发表于 2015-1-31 09:53:37 |AI写论文
15论坛币
各位大神好,小弟想通过sas9.2将一个excel文件的字符型转化为日期型。比如  1991-01(只有年月)
请各位指点一下应该怎么办呢?谢谢。从网上看了  input(varible,yymmd7.)程序报错

最佳答案

就喜欢马 查看完整内容

SAS中日期是被看作是数值型,所有日期型变量被作为是输入日期与1960年1月1日之差。如1960-1-1, SAS会认为这个值是0。所以只有年月的字符日期是没法转化为数值的,必须年月日全有。如果将只有年月的日期当成每月第一天算,即1991-01当成1991-01-01,可以参考以下语句:大概意思就是对日期判定,如果日期长度大于等于8,保留;如果小于8,在原变量基础上增加'-01',最后再用input把字符转化为数值。
关键词:varible EXCEL Input exce xcel excel 程序 网上

沙发
就喜欢马 发表于 2015-1-31 09:53:38
SAS中日期是被看作是数值型,所有日期型变量被作为是输入日期与1960年1月1日之差。如1960-1-1, SAS会认为这个值是0。所以只有年月的字符日期是没法转化为数值的,必须年月日全有。如果将只有年月的日期当成每月第一天算,即1991-01当成1991-01-01,可以参考以下语句:
  1. data m;
  2. input m$12.;
  3. cards;
  4. 1990-10
  5. 1990-10-25
  6. ;
  7. run;
  8. data m;
  9. set m;
  10. m=input(ifc(lengthn(m)<8,cats(m,'-01'),m),yymmdd10.);/*只要这句里面的变量m换了就行,日期的长度也可以根据实际情况更改*/
  11. run;
复制代码
大概意思就是对日期判定,如果日期长度大于等于8,保留;如果小于8,在原变量基础上增加'-01',最后再用input把字符转化为数值。
已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

总评分: 论坛币 + 100   查看全部评分

藤椅
sduruc 发表于 2015-1-31 11:38:46
就喜欢马 发表于 2015-1-31 09:53
SAS中日期是被看作是数值型,所有日期型变量被作为是输入日期与1960年1月1日之差。如1960-1-1, SAS会认为这 ...
谢谢您

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

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