【问题标题】:Adding label to SAS variables为 SAS 变量添加标签
【发布时间】:2018-05-15 03:26:53
【问题描述】:

我在 SAS 中有一个名为 "Flight" 的数据集,我想用匹配的值标记一个特定列 "Carrier" 的所有行 ("Flght_carrier_code") 来自另一个数据集 称为“航空公司”

请提出一些方法。

示例数据集 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.

【问题讨论】:

  • 听起来与向数据集或变量添加标签无关。相反,如果看起来你想解码一个变量。你试过什么?你创建格式了吗?
  • 加入?您想要一个名称与代码关联的列吗?然后,使用连接!

标签: sas proc-sql


【解决方案1】:

您描述的标签可以被认为是行标签,但更常见的术语是:

  • 价值映射
  • 格式化
  • 左连接
  • 合并
  • 查找

注意: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
  ;

格式

自定义格式通常涉及查看和输出呈现时的变量数据表示级别处理——例如:EG 网格、ViewTable、程序输出。可以从 airlines 等数据集创建自定义格式。自定义格式可以是永久的(在 SAS 会话结束后仍然存在)或临时的(仅在 SAS 会话期间存在)。如果您想尝试这种方式,请阅读有关 Proc FORMAT CNTLIN= 的文档。

【讨论】:

    【解决方案2】:

    我会在上面的代码中添加标签

    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
      ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多