Sas Proc制表:对格式化变量重新排序
我使用以下代码创建了一个day变量:Sas Proc制表:对格式化变量重新排序,sas,Sas,我使用以下代码创建了一个day变量: DAY=datepart(checkin_date_time); /*example of checkin_date_time 1/1/2014 4:44:00*/ format DAY DOWNAME.; 样本数据: ID checkin_date_time Admit_Type BED_ORDERED_TO_DISPO 1 1/1/2014 4:40:00 ICU 4
DAY=datepart(checkin_date_time); /*example of checkin_date_time 1/1/2014 4:44:00*/
format DAY DOWNAME.;
样本数据:
ID checkin_date_time Admit_Type BED_ORDERED_TO_DISPO
1 1/1/2014 4:40:00 ICU 456
2 1/1/2014 5:64:00 Psych 146
3 1/1/2014 14:48:00 Acute 57
4 1/1/2014 20:34:00 ICU 952
5 1/2/2014 10:00:00 Psych 234
6 1/2/2014 3:48:00 Psych 846
7 1/2/2014 10:14:00 ICU 90
8 1/2/2014 22:27:00 ICU 148
我想使用Proc选项卡分析一些数据,其中day是类变量之一,并在输出中按时间顺序显示星期几;但是,输出表从星期二开始。我想从星期天开始。我已经阅读了下一页并尝试了proc格式的无效代码,但它生成了一个表,其中“星期几”=“21”。不太确定从这里到哪里去
谢谢
proc format;
invalue day_name
'Sunday'=1
'Monday'=2
'Tuesday'=3
'Wednesday'=4
'Thursday'=5
'Friday'=6
'Saturday'=7;
value day_names
1='Sunday'
2='Monday'
3='Tuesday'
4='Wednesday'
5='Thursday'
6='Friday'
7='Saturday';
run;
data Combined_day;
set Combined;
day_of_week = input(day,day_name.);
run;
proc tabulate data = Combined_day;
class Day Admit_Type;
var BED_ORDERED_TO_DISPO ;
format day_of_week day_names.;
table Day*Admit_Type, BED_ORDERED_TO_DISPO * (N Median);
run;
基本上,您将实际值与显示值(即格式)混淆。具体来说,
datepart
从日期/时间字段中提取日期部分。然后,应用格式
只会更改其显示方式,而不会更改实际的基础值。因此,以下日期从不包含字符值“星期三”或“星期四”
,而是原始整数值(19724
和19725
)
考虑实际使用函数将列指定为工作日值。然后将用户定义的格式应用于proc tablate
data Combined_day;
set Combined;
checkin_date = datepart(checkin_date_time); // NEW DATE VALUE (NO TIME)
format checkin_date date9.;
checkin_weekday = weekday(checkin_date); // NEW INTEGER VALUE OF WEEKDAY
run;
proc tabulate data = Combined_day;
class checkin_weekday Admit_Type;
var BED_ORDERED_TO_DISPO ;
format checkin_weekday day_names.; // APPLY USER DEFINED FORMAT
table checkin_weekday*Admit_Type, BED_ORDERED_TO_DISPO * (N Median);
run;
@Parfait,谢谢你的帮助-见上文。
data Combined_day;
set Combined;
checkin_date = datepart(checkin_date_time); // NEW DATE VALUE (NO TIME)
format checkin_date date9.;
checkin_weekday = weekday(checkin_date); // NEW INTEGER VALUE OF WEEKDAY
run;
proc tabulate data = Combined_day;
class checkin_weekday Admit_Type;
var BED_ORDERED_TO_DISPO ;
format checkin_weekday day_names.; // APPLY USER DEFINED FORMAT
table checkin_weekday*Admit_Type, BED_ORDERED_TO_DISPO * (N Median);
run;