首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建代码/循环来自动创建变量?

如何创建代码/循环来自动创建变量?
EN

Stack Overflow用户
提问于 2022-05-28 00:11:29
回答 1查看 63关注 0票数 2

我正在写我的论文,我正在努力准备一些数据。

我有一个包含pricesdistance和许多美国航空公司航线的其他变量的数据集。我需要识别特定航空公司(西南)在每条航线上进入的威胁,为此,我需要为数据集的每一行创建一个假设值为1的假人,如果西南航空公司当时正从该航线的起飞机场起飞。

我是如何处理这个问题的:有一个算法来检查year和起飞airport_ID (数据集中的所有变量),然后根据这个值过滤所有数据集,依次是year =<年份行、origin_airport= origin_airport行、carrier =西南。如果过滤器产生一个输出,那就意味着西南航空已经从那个机场起飞了。因此,如果筛选产生一个输出,则虚拟值应该假定为1,否则为0。对于数据集中的每一行,这都应该是自动化的。

你知道如何把这些写进Rstudio代码吗?还是有更简单的方法来解决这个问题?

这是到dropbox上的数据集的链接:

https://www.dropbox.com/s/n09rp2vcyqfx02r/DB1B_completeDB1B_complete.csv?dl=0

EN

回答 1

Stack Overflow用户

发布于 2022-05-31 01:15:15

简单的回答是使用一个自连接。

查看您的数据集,我没有看到IATA机场代码,而是6位数字的原点和目的地id(它们似乎不符合DB1A/DB1B??中的任何内容)。而且,(对我来说)不清楚数据的粒度到底是什么,所以做一些假设。

代码语言:javascript
复制
library(data.table)
setwd('<directory with your csv file>')
data <- fread('DB1B_completeDB1B_complete.csv')
wn   <- data[carrier=='WN']
data[,   flag:=0]
data[wn, flag:=1, on=.(ap_id, year, quarter, date)]

因此,这只需提取WN记录,然后将其连接回ap_id (定义路由?)、yearquarterdate上的原始表。这假设粒度位于载波/路由/年度/季度/日期级别(例如,每一行)。

不过,在这样做之前,您需要进行一些严肃的数据清理。例如,虽然ORIGIN_AIRPORT_CD和DEST_AIRPORT_CD看起来是从ap_id中解析出来的,但是大约有1200个记录是NA的。

代码语言:javascript
复制
##
#   missingness
#
data[, .(col = names(data), na.count=sapply(.SD, \(x) sum(is.na(x))))]

另外,我的假设是,每艘船/航线/年度/季度/日期有一行,但似乎并不总是如此。这是WN行的一个特别严重的问题。

代码语言:javascript
复制
##
#   duplicates??
#
data[, .N, keyby=.(carrier, ap_id, year, quarter, date)][order(-N)]
wn[,   .N, keyby=.(carrier, ap_id, year, quarter, date)][order(-N)]

最后,在试图量化WN进入市场的影响时,您可能至少应该考虑将附近的机场分组。例如,JFK/LGA/EWR经常被认为是"NYC",SFO/OAK/SJC经常被认为是“湾区”(这些只是例子)。例如,这意味着,如果WN开始从LGA飞往感兴趣的目的地,也可能会影响从JFK和EWR到同一目的地的OA价格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72412057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档