SAS 中的天数格式化
Days Formatting in SAS
我有一组数据,我想使用 SAS 对其进行操作:这是我的代码,但日期格式似乎有问题:
/*DATA:
3241 F 100287012
13431043321110310022
5673 M 211178124
11031002231134310433
4702 M 170780025
31134310433211103100
2496 F 030979013
22311542102231152111
6543 M 090885124
03100343104332111031 */
/*
1st Row.
Input ID 4. Gender $ Birthdate 6. Race 1. Marital 1. Status_and_Education 1. @@;*/
Data Survey;
Infile "/folders/myfolders/surveydata.txt";
Input ID 4. Gender $ Birthdate 6. Race 1. Marital 1. Status_and_Education 1. @@;
Input / Reponse_1 5. Reponse_2 1. Reponse_3 1. Reponse_4 1. Reponse_5 1.
Reponse_6 1. Reponse_7 1. Reponse_8 1. Reponse_9 1. Reponse_10 1.
Reponse_11 1. Reponse_12 1. Reponse_13 1. Reponse_14 1. Reponse_15 1.
Reponse_16 1. Reponse_17 1. Reponse_18 1. Reponse_19 1. Reponse_20 @;
format Birthdate ddmmyy8.;
run;
proc print data=Survey;
format Birthdate DDMMYY.;
run;
这是输出:
您没有将变量 BIRTHDATE 读作日期,而是将其读作常规数字。因此,对于数据的第一行,我看到这个字符串 100287
,您将其读作数字 100,287。由于今天是第 21,169 天,因此该值表示从现在起超过 79,000 天或超过 216 年的一天。
改用这样的代码。请注意,我喜欢对日期使用 YMD 顺序而不是 MDY 或 DMY 顺序,以避免在处理来自世界不同地区的 people/data 时出现混淆。
data Survey;
infile "/folders/myfolders/surveydata.txt";
input ID 4. +1 Gender . +1 Birthdate ddmmyy6. Race 1.
Marital 1. Status_and_Education 1.
/ Response_1 5. (Response_2-Response_20) (1.)
;
format Birthdate yymmdd10.;
run;
我有一组数据,我想使用 SAS 对其进行操作:这是我的代码,但日期格式似乎有问题:
/*DATA:
3241 F 100287012
13431043321110310022
5673 M 211178124
11031002231134310433
4702 M 170780025
31134310433211103100
2496 F 030979013
22311542102231152111
6543 M 090885124
03100343104332111031 */
/*
1st Row.
Input ID 4. Gender $ Birthdate 6. Race 1. Marital 1. Status_and_Education 1. @@;*/
Data Survey;
Infile "/folders/myfolders/surveydata.txt";
Input ID 4. Gender $ Birthdate 6. Race 1. Marital 1. Status_and_Education 1. @@;
Input / Reponse_1 5. Reponse_2 1. Reponse_3 1. Reponse_4 1. Reponse_5 1.
Reponse_6 1. Reponse_7 1. Reponse_8 1. Reponse_9 1. Reponse_10 1.
Reponse_11 1. Reponse_12 1. Reponse_13 1. Reponse_14 1. Reponse_15 1.
Reponse_16 1. Reponse_17 1. Reponse_18 1. Reponse_19 1. Reponse_20 @;
format Birthdate ddmmyy8.;
run;
proc print data=Survey;
format Birthdate DDMMYY.;
run;
这是输出:
您没有将变量 BIRTHDATE 读作日期,而是将其读作常规数字。因此,对于数据的第一行,我看到这个字符串 100287
,您将其读作数字 100,287。由于今天是第 21,169 天,因此该值表示从现在起超过 79,000 天或超过 216 年的一天。
改用这样的代码。请注意,我喜欢对日期使用 YMD 顺序而不是 MDY 或 DMY 顺序,以避免在处理来自世界不同地区的 people/data 时出现混淆。
data Survey;
infile "/folders/myfolders/surveydata.txt";
input ID 4. +1 Gender . +1 Birthdate ddmmyy6. Race 1.
Marital 1. Status_and_Education 1.
/ Response_1 5. (Response_2-Response_20) (1.)
;
format Birthdate yymmdd10.;
run;