2017-10-17 69 views
2

对于数据表,我该如何进行动态搜索,并且只选择具有相同的Tail_No,具有不同目的地的相同Flight_ID的行。我有几百万行 的下面是表我有r中的动态迭代

My_data_table 

    Unique_ID Tail_No Flight_ID Arrival_Airport 
    1AA  1234  abcd   JFK 
    2AA  4234  bcde   BWI 
    3AA  5234  zbcd   DCA 
    4AA  6234  ybcd   LOS 
    5AA  7234  mbcd   JFK 
    6AA  1284  lbcd   LAX 
    7AA  1234  abcd   DEN 

这就是我要寻找的结果。注意我有数百万行,所以按Tail_No进行子集化,而Flight_ID是不可行的。

 My Result_Table 
    Unique_ID Tail_No Flight_ID Arrival_Airport 
    1AA  1234  abcd   JFK 
    7AA  1234  abcd   DEN 
+0

@ Mako212 - 我很清楚。只保留具有不同arrival_airport目的地的重复的tail_no/flight_id的行 – thelatemail

回答

0

我推荐阅读关于如何子集here。这段代码应该做你想要的。

My_data_table[My_data_table$Flight_ID == 'abcd' & My_data_table$Tail_No == 1234,] 
1

首先,删除Tail_No,Flight_ID和Arrival_Airport(目的地)上的所有重复项。即 - 那些去相同的目的地。
然后确定仍然重复的Tail_No/Flight_ID组合。
最后,合并回原来的设置,以获得所要求的行:

vars <- c("Tail_No", "Flight_ID") 
tmp <- dat[!duplicated(dat[c(vars, "Arrival_Airport")]),] 
merge(tmp, tmp[duplicated(dat[vars]), vars]) 

# Tail_No Flight_ID Unique_ID Arrival_Airport 
#1 1234  abcd  1AA    JFK 
#2 1234  abcd  7AA    DEN 
0

第二次尝试:在子集的地方,我们有重复Tail_No/Flight_ID对行,然后过滤,以独特的ARRIVAL_AIRPORT各组内

require(data.table) 
setDT(My_data_table) 

My_data_table[,if(.N>1)unique(.SD),keyby=.(Tail_No,Flight_ID)] 

    Tail_No Flight_ID Unique_ID Arrival_Airport 
1: 1234  abcd  1AA    JFK 
2: 1234  abcd  7AA    DEN 
+0

我试着运行您的代码,但它不起作用。 – Riff

+0

@ user8192069对不起,复制并粘贴失败(我认为),再试一次! – Mako212