sas - 为 SAS 变量添加标签
问题描述
我在 SAS 中有一个名为“Flight”的数据集,我想用与另一个名为“Airlines”的数据集匹配的值 (“Flght_carrier_code”)标记一个特定列“Carrier”的所有行。
请提出一些方法。
样本数据集 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 格式就像系统内的自动左连接。
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=
如果您想尝试这种方式,请阅读您的文档。
推荐阅读
- java - 使用空手道框架并行执行
- node.js - Gatsby Plugin sharp 在 MacOS 上构建良好,但在 Debian 容器上失败
- ios - 如何关闭 iOS Swift SKOverlay?
- c++ - 如何从矢量打印某些元素?
- terminal - 为什么`stty cols 40`在两个shell bash和xonsh中有不同的效果
- javascript - 如何将已创建的侧边栏转换为响应式设计?
- javascript - 所有的酒吧应该是相同的高度。数据部分应该是彩色的,其余部分应该是灰色的
- php - 我的弹出窗口没有显示在上面,我已经尝试了很多方法来在 laravel 中做到这一点
- react-native-android - 添加 efr=1 时动态链接中出现错误
- python - 有背景颜色时 QComboBox 框架发生变化