2017-10-20 59 views
-2

對於下面的示例表,我只想選擇其中Unique_ID相同但Tail_No不同的行。R中的條件選擇

My_data_table 
Unique_ID Tail_No 
    1AA  1234 
    1AA  1234  
    1AA  4234  
    3AA  5234  
    4AA  6234  
    4AA  7234  
    6AA  1284  
    7AA  1234  

我希望我的結果表看起來像這樣

My_data_table 
    Unique_ID Tail_No 
    1AA  1234  
    1AA  4234   
    4AA  6234  
    4AA  7234  
+0

你不清楚你在問什麼。 – bouncyball

回答

0

下面是使用dplyr

library(dplyr) 

filter(df, Unique_ID %in% Unique_ID[duplicated(Unique_ID)]) %>% 
    distinct(Unique_ID, Tail_No) 
+1

哎呦,C/P錯誤行。謝謝! –

+0

但是,這也保留具有相同'Unique_ID' *和*相同'Tail_No'的行。例如,如果有兩行「1AA 1234」,它將保留兩者,而他/她只請求具有相同「Unique_ID」但不同的「Tail_No」的那些行。 – Lyngbakr

+0

簡單修復使用'distinct' –

0

的數據子集您提供與您的問題不說清楚的方式。這是我最好的猜測:

  • 創建數據幀:

    df <- structure(list(Unique_ID = c("1AA", "1AA", "3AA", "4AA", "4AA", "6AA", "7AA"), 
           Tail_No = c(1234, 4234, 5234, 6234, 7234, 1284, 1234)), 
          class = "data.frame", 
          .Names = c("Unique_ID", "Tail_No"), 
          row.names = c(NA, -7L)) 
    
  • 我們把這個問題分兩個步驟:

    library(dplyr) 
    df1 <- df %>% 
        group_by(Unique_ID) %>% # Group your rows per their unique ID 
        filter(n() > 1) %>% # Keep rows that have repeated UIDs 
        ungroup() # Undo grouping (not needed anymore) 
    print(df1) 
    

這是重複的表唯一ID

Unique_ID Tail_No 
     <chr> <dbl> 
1  1AA 1234 
2  1AA 4234 
3  4AA 6234 
4  4AA 7234 
  • 記住,有一個獨特的(UID, Tail_No)元組行:

    df2 <- df1 %>% 
        group_by(Unique_ID, Tail_No) %>% 
        filter(n() == 1) %>% 
        ungroup() 
    print(df2) 
    

這是結果:

Unique_ID Tail_No 
     <chr> <dbl> 
1  1AA 1234 
2  1AA 4234 
3  4AA 6234 
4  4AA 7234 

也許(你的問題是不明確),你想與行重複Unique_ID的唯一Tail_No。如果是這樣的話,你將需要:

  • 保留已行的唯一Tail_No

    df2 <- df1 %>% 
        group_by(Tail_No) %>% 
        filter(n() == 1) %>% 
        ungroup() 
    print(df2) 
    

這是結果:

Unique_ID Tail_No 
     <chr> <dbl> 
1  1AA 1234 
2  1AA 4234 
3  4AA 6234 
4  4AA 7234 

你的問題但數據集示例並不清楚。希望這個答案對你有用