楼主: sduruc
4725 2

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

  • 7关注
  • 23粉丝

学科带头人

71%

还不是VIP/贵宾

-

威望
0
论坛币
8286 个
通用积分
5.3897
学术水平
29 点
热心指数
40 点
信用等级
31 点
经验
98266 点
帖子
593
精华
0
在线时间
4066 小时
注册时间
2011-9-24
最后登录
2023-2-20

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
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-15 01:40