对于数据表,如何进行动态搜索,仅选择具有相同Tail_No的行,具有不同目的地的相同Flight_ID。我有数百万行 以下是我的表
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 :(得分: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
答案 1 :(得分:0)
我建议阅读子集化here的方法。这段代码应该是您正在寻找的。 p>
My_data_table[My_data_table$Flight_ID == 'abcd' & My_data_table$Tail_No == 1234,]
答案 2 :(得分: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