按特定条件替换SAS中缺少的值
我有一个名为Planes的大型数据集,其中到达延迟(Arr\u Delay)中缺少值 用特定路线(起点-终点)上的平均延迟替换这些缺失值 承运人。 以下是数据集的样本:-按特定条件替换SAS中缺少的值,sas,proc-sql,Sas,Proc Sql,我有一个名为Planes的大型数据集,其中到达延迟(Arr\u Delay)中缺少值 用特定路线(起点-终点)上的平均延迟替换这些缺失值 承运人。 以下是数据集的样本:- date carrier Flight tailnum origin dest Distance Air_time Arr_Delay 01-01-2013 UA 1545 N14228 EWR IAH 1400 227 17 01-
date carrier Flight tailnum origin dest Distance Air_time Arr_Delay
01-01-2013 UA 1545 N14228 EWR IAH 1400 227 17
01-01-2013 UA 1714 N24211 LGA IAH 1416 227 .
01-01-2013 AA 1141 N619AA JFK MIA 1089 160 .
01-01-2013 EV 5708 N829AS LGA IAD 229 53 -18
01-01-2013 B6 79 N593JB JFK MCO 944 140 14
01-01-2013 AA 301 N3ALAA LGA ORD 733 138 .
01-01-2013 B6 49 N793JB JFK PBI 1028 149 .
01-01-2013 B6 71 N657JB JFK TPA 1005 158 19
01-01-2013 UA 194 N29129 JFK LAX 2475 345 23
01-01-2013 UA 1124 N53441 EWR SFO 2565 361 -29
Proc stdize data=cs1.Planes reponly method=mean out=cs1.Complete_data;
var Arrival_delay_minutes;
Run;
我尝试过的代码:-
date carrier Flight tailnum origin dest Distance Air_time Arr_Delay
01-01-2013 UA 1545 N14228 EWR IAH 1400 227 17
01-01-2013 UA 1714 N24211 LGA IAH 1416 227 .
01-01-2013 AA 1141 N619AA JFK MIA 1089 160 .
01-01-2013 EV 5708 N829AS LGA IAD 229 53 -18
01-01-2013 B6 79 N593JB JFK MCO 944 140 14
01-01-2013 AA 301 N3ALAA LGA ORD 733 138 .
01-01-2013 B6 49 N793JB JFK PBI 1028 149 .
01-01-2013 B6 71 N657JB JFK TPA 1005 158 19
01-01-2013 UA 194 N29129 JFK LAX 2475 345 23
01-01-2013 UA 1124 N53441 EWR SFO 2565 361 -29
Proc stdize data=cs1.Planes reponly method=mean out=cs1.Complete_data;
var Arrival_delay_minutes;
Run;
但正如我的问题所述..我想通过特定路线和特定承运人获得缺失值的平均值。请帮帮我标准化过程没有包含by或类变量的方法。您可以使用以下代码完成任务:-
Proc means data=cs1.Planes noprint;
var Arr_Delay;
class carrier origin dest;
output out=mean1;
Run;
proc sort data=cs1.Planes;
by carrier origin dest;
run;
proc sort data=mean1;
by carrier origin dest;
run;
data cs1.Complete_data(drop=Arr_Delay1 _stat_);
merge cs1.Planes(in=a) mean1(where=(_stat_="MEAN")
keep=carrier origin dest Arr_Delay _stat_
rename=(Arr_Delay = Arr_Delay1) in=b);
by carrier origin dest;
if a;
if Arr_Delay =. then Arr_Delay=Arr_Delay1;
run;
在运行
Proc stdize
之前,您只需按原点、目的地和承运商对表cs1.Planes
进行排序,然后按原点、目的地和承运商添加代码>以执行所需的分组。只有当该承运人/路线没有其他值时,这些值才会丢失
您可以找到SAS文档和可用选项
代码:
替换缺失值的技术术语为。可以处理组处理(也称为BY
)处理的过程将有一个BY
语句可用于编码。