我在SAS中有一个名为" Flight" 的数据集,我想标记一个特定列的所有行" Carrier" 匹配的值 来自其他数据集的(" Flght_carrier_code") 称为" Airlines" 。
请建议一些方法。
示例数据集1 - "航班"
date carrier flight tailnum air_time
01-01-2013 UA 1714 N24211 227
01-01-2013 AA 1141 N619AA 160
01-01-2013 B6 725 N804JB 183
01-01-2013 DL 461 N668DN 116
01-01-2013 UA 1696 N39463 150
01-01-2013 B6 507 N516JB 158
01-01-2013 EV 5708 N829AS 53
01-01-2013 B6 79 N593JB 140
01-01-2013 AA 301 N3ALAA 138
01-01-2013 B6 49 N793JB 149
01-01-2013 B6 71 N657JB 158
示例数据集2 - "航空公司"
Flght_carrier_Code name
9E Endeavor Air Inc.
AA American Airlines Inc.
AS Alaska Airlines Inc.
B6 JetBlue Airways
DL Delta Air Lines Inc.
EV ExpressJet Airlines Inc.
F9 Frontier Airlines Inc.
FL AirTran Airways Corporation
HA Hawaiian Airlines Inc.
MQ Envoy Air
OO SkyWest Airlines Inc.
UA United Air Lines Inc.
US US Airways Inc.
VX Virgin America
WN Southwest Airlines Co.
YV Mesa Airlines Inc.
答案 0 :(得分:5)
您描述的标签可以被视为行标记,但更常见的术语是:
注意:SAS格式就像系统中的自动左连接。
<强> SQL 强>
您标记了proc-sql
,因此一种方法是左连接,它将保留没有匹配的行和运营商值。您可能还需要一个sql视图来阻止创建较新的较大的表
proc sql;
create view work.flights_v as
select
coalesce(airlines.name, flights.carrier) as carrier_name
, flights.*
from
flights
left join
airlines
on
flights.carrier = airlines.Flght_carrier_Code
;
<强> FORMATS 强>
自定义格式通常涉及在查看和输出渲染时的变量数据表示级处理 - 例如:EG网格,ViewTable,过程输出。可以从airlines
等数据集创建自定义格式。自定义格式可以是永久性的(在SAS会话结束后保持)或临时格式(仅在SAS会话期间存在)。如果您想尝试这种方式,请阅读有关Proc FORMAT CNTLIN=
的文档。
答案 1 :(得分:0)
我只想在上面的代码中添加标签
proc sql;
create view work.flights_v as
select
coalesce(airlines.name, flights.carrier) as carrier_name label="carrier"
, flights.*
from
flights
left join
airlines
on
flights.carrier = airlines.Flght_carrier_Code
;