代码之家  ›  专栏  ›  技术社区  ›  Banjo

使用dpylr在两列中查找重复的字符值

  •  0
  • Banjo  · 技术社区  · 6 年前

    我有一个包含名字和姓氏的列的数据集。我想筛选那些名字和姓氏相同的行。

    例如,如果数据中的名字多次表示peter和last name parker,我想过滤这些行。

    目前,我尝试:

    library(dplyr)
    dat %>%
      filter(duplicated(as.numeric(`First name`)) & duplicated(as.numeric(`Last name`)))
    

    但是,列first name和last name中返回的值不同。

    @阿格诺瑙

    dat %>%
      filter(duplicated(paste0(`First name`, `Last name`)))
    
        # A tibble: 5 x 2
          `First name` `Last name`
          <chr>        <chr>      
        1 Frank        Seehaus    
        2 Nadine       Urseanu    
        3 Rudolf       Schicker   
        4 Renate       Kaymer     
        5 Brigitte     Reibenspies
    

    我想看:

        # A tibble: 5 x 2
          `First name` `Last name`
          <chr>        <chr>      
        1 Peter        Parker    
        2 Perer       Perker    
        3 Peter       Parker   
        ...
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   arg0naut91    6 年前

    你可以试试:

    library(dplyr)
    
    dat %>%
      filter(duplicated(paste0(`First name`, `Last name`)))
    

    根据以下数据输出:

      First name Last name
    1      Peter    Parker
    

    如果你想把所有的复制品都归还,你可以这样做:

    dat %>%
      group_by(`First name`, `Last name`) %>%
      filter(n() > 1)
    

    根据以下数据输出:

    # A tibble: 2 x 2
    # Groups:   First name, Last name [1]
      `First name` `Last name`
      <fct>        <fct>      
    1 Peter        Parker     
    2 Peter        Parker 
    

    实例数据:

    dat <-
      data.frame(
        `First name` = c("Peter", "Peter", "John", "John"),
        `Last name` = c("Parker", "Parker", "Biscuit", "Chocolate"),
        check.names = FALSE
      )
    
    dat
    
      First name Last name
    1      Peter    Parker
    2      Peter    Parker
    3       John   Biscuit
    4       John Chocolate