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

时间:2019-02-14 13:40:11

标签: r dplyr

我有一个数据集,其中的列包含名字和姓氏。我想过滤名字和姓氏相同的行。

例如,如果在数据中我的名字叫彼得,姓Parker几次,我想过滤这些行。

目前,我尝试过:

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

但是,列名和姓氏中返回的值不同。

@ arg0naut

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 个答案:

答案 0 :(得分:2)

您可以尝试:

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