R?中基于两个嵌套条件过滤数据帧的最有效算法



我目前正在处理一个非常大的数据框(~2M行)关于着陆"然后"起飞"。还有一些信息,比如手术发生的时间,在哪个机场,飞往哪里等等。

我想做的是将整个DF过滤成一个只考虑"航班"的新DF,因此,根据出发地机场和目的地机场的机场代码,大约有一半的条目匹配每个起飞和相应降落。

我所做的,这是有效的,但考虑到DF有多大,它需要大约200小时才能完成

Loop on all rows of DF checking for some df$Operation=="takeoff"{
Loop on all rows, below the row found before, for df$operation="ladning" 
where codes of origin and destination airport match the "take off" entry{
Once found i add the data i need to the new df called Flights
}
}

(如果第二个循环在接下来的100行中没有找到匹配项,它将丢弃该条目并搜索下一个"起飞")

是否有一个函数可以更有效地执行这个操作?如果没有,你知道有什么算法可以比我做的更快吗?

我真的不习惯数据科学,也不习惯r。如果有任何帮助,我将不胜感激。

提前感谢!

在R中我们尽量避免使用循环。为了过滤数据帧,我将使用dplyr中的filter函数。Dplyr在处理数据框架方面非常出色、简单、快速。如果还是不够快,你可以试试数据。

我认为这是你想要的。

library(dplyr)
flights <- df %>% 
arrange(datetime) %>% # make sure the data is in the right order
group_by(origin, destination) %>% # for each flight path
dplyr::filter(Operation %in% c("takeoff", "landing")) # get these rows

我推荐在线书籍R For Data Science:https://r4ds.had.co.nz/

最新更新