我有一个数据集,其中的列包含名字和姓氏。我想过滤名字和姓氏相同的行。
例如,如果在数据中我的名字叫彼得,姓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
...
答案 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