r语言 - 如何创建代码/循环来自动创建变量?



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

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

我想到的方法是有一个算法来检查year和起飞airport_ID(数据集中的所有变量),然后基于该值通过所有数据集过滤year=<年份行,origin_airport>

你知道怎么把它放进Rstudio代码吗?或者有没有更简单的方法来解决这个问题?

这是到dropbox数据集的链接:

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

简单的答案是使用自连接。

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

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(定义路由??),year,quarterdate上的原始表。这假设粒度是在运营商/路线/年/季度/日期级别(例如每行)。

但是,在此之前,您需要进行一些严肃的数据清理。例如,虽然看起来ORIGIN_AIRPORT_CD和DEST_AIRPORT_CD是从ap_id中解析出来的,但大约有1200条记录是NA。
##
#   missingness
#
data[, .(col = names(data), na.count=sapply(.SD, (x) sum(is.na(x))))]

此外,我假设每个运营商/路线/年/季度/日期有一行似乎并不总是成立。对于WN行,这是一个特别严重的问题。

##
#   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经常被认为是"纽约",SFO/OAK/SJC经常被认为是"湾区"。(这些只是例子)。这意味着,例如,如果WN开始从LGA飞往感兴趣的目的地,它也可能影响从JFK和EWR到同一目的地的OA价格。

相关内容

  • 没有找到相关文章

最新更新