2017-10-17 89 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