R中的条件选择

时间:2017-10-20 16:06:03

标签: r

对于下面的示例表,我想只选择Unique_ID相同但Tail_No不同的行。

 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      

2 个答案:

答案 0 :(得分:0)

以下是使用dplyr

的方法
library(dplyr)

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

答案 1 :(得分: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

但您的问题和数据集示例并不清楚。希望这个答案对你有用