嗨,我是初学者是sas,我需要这个问题的帮助。
我想将2017年转换为2017年11月13日。我无法理解这个棘手的问题。
请提前帮助和谢谢。
答案 0 :(得分:0)
如果这是出于显示目的,并假设所有日期值与您的问题中的格式相同,那么这应该有效。
首先创建显示月份的格式:
proc format lib=work;
value mon
1 = "Jan"
2 = "Feb"
3 = "Mar"
4 = "Apr"
5 = "May"
6 = "Jun"
7 = "Jul"
8 = "Aug"
9 = "Sep"
10 = "Oct"
11 = "Nov"
12 = "Dec"
;
run;
然后从日期变量中对月份和年份进行子串,然后应用格式。
data have;
length full_date $20;
date = 201711;
mon = input(substrn(date,5,2),best.);
yr = input(substrn(date,1,4),best.);
full_date = compbl(put(mon,mon.)||put(yr,best.));
run;
答案 1 :(得分:0)
如果' 201711'只是你需要转换的一些文本,然后似乎缺少日期数,所以必须添加它。 SAS将日期视为数字,因此将文本日期转换为SAS日期格式非常有用。然后可以重新格式化日期:
data want;
have = '201711'; /* given partial date */
add_day = '13'; /* day of month to add */
full_dt = cats(have,add_day); /* join day to partial date */
num_dt = input(full_dt,yymmdd8.); /* convert to a SAS date */
text_dt = put(num_dt,date9.); /* format as desired */
run;
由于您是SAS的新手,我已经评论了每个部分正在做什么,但是了解SAS中的日期处理/处理会更有用,例如:以下是一个有用的开始: