楼主: qcasrl
14770 17

sas 不规则字符型日期变量换成ddmmyy10.格式 [推广有奖]

  • 6关注
  • 0粉丝

博士生

27%

还不是VIP/贵宾

-

威望
0
论坛币
99 个
通用积分
17.8700
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
503 点
帖子
106
精华
0
在线时间
397 小时
注册时间
2014-1-16
最后登录
2023-12-7

楼主
qcasrl 发表于 2015-8-11 16:19:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
一批不规则字符型日期数据
2004-1-31
2006-11-10
2010-10-1
2010-01-1

如何把以上字符型变量变成MMDDYY10.日期型变量?



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:DDMM 日期变量 不规则 DDM 字符型 如何

沙发
苹果叶 在职认证  发表于 2015-8-11 23:37:36
  1. data test;
  2.   input date $20.;
  3.   length date_expected $10.;
  4.   date_expected=scan(put(input(date, anydtdtm.), e8601dt.),1,'T');
  5.   cards;
  6. 2004-1-31
  7. 2006-11-10
  8. 2010-10-1
  9. 2010-01-1
  10. ;
  11. run;
复制代码

藤椅
teqel 发表于 2015-8-12 03:30:50
input date anydtdte;
format date ddmmyy10.;

板凳
统计2008陈利 发表于 2015-8-12 09:56:13
data test;
        input date $12.;
        format date_new ddmmyy10.;  /*可以format任意日期格式*/
        date_new=mdy(scan(date,2,'-'),scan(date,3,'-'),scan(date,1,'-'));
        cards;
2004-1-31
2006-11-10
2010-10-1
2010-01-1
;
run;

报纸
qcasrl 发表于 2015-8-12 23:38:31
统计2008陈利 发表于 2015-8-12 09:56
data test;
        input date $12.;
        format date_new ddmmyy10.;  /*可以format任意日期格式*/
谢谢,我最后也是用这种方法做的,但是不太理解scan的用法,还有这里面的2,3,1;

如果scan是以指定字符串为界提取信息,那怎么知道这里指的“—”是它遇到的第一个“-”还是第二个“-”?

2,3,1代表的是以特殊字符分隔的第几部分?还是提取的字段位数?

地板
qcasrl 发表于 2015-8-12 23:39:11
teqel 发表于 2015-8-12 03:30
input date anydtdte;
format date ddmmyy10.;
anydtdte是指任意格式的日期变量?

7
qcasrl 发表于 2015-8-12 23:40:27
苹果叶 发表于 2015-8-11 23:37
scan(put(input(date, anydtdtm.), e8601dt.),1,'T')

其实我没太看懂这段代码。。。scan的用法没看懂,求解释

8
teqel 发表于 2015-8-13 00:15:12
qcasrl 发表于 2015-8-12 23:39
anydtdte是指任意格式的日期变量?
yes. But it should work with the option

Datastyle = DMY|MDY

9
chiant 发表于 2015-8-13 04:34:35
完全不需要这么复杂, 用informat轻松搞定

  1. data test;
  2.         informat date yymmdd.;
  3.         format date mmddyy10.;
  4.         input date;
  5.         cards;
  6. 2004-1-31
  7. 2006-11-10
  8. 2010-10-1
  9. 2010-01-1
  10. ;
  11. run;
复制代码

10
统计2008陈利 发表于 2015-8-13 09:23:39
qcasrl 发表于 2015-8-12 23:38
谢谢,我最后也是用这种方法做的,但是不太理解scan的用法,还有这里面的2,3,1;

如果scan是以指定字 ...
scan函数只能针对特定分隔符的字符串的子串提取,现在的数据分隔符都是‘-’,所以比较简单,字符串是被分隔符分成了三部分的。scan函数的2,3,1就取相应部分的子串分别作为月,日,年。如果分隔符不统一,那就复杂一些了。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-10 23:00