Поиск функции R для обнаружения дубликата или того же значения в tibble

#r #function #tibble

#r #функция #tibble

Вопрос:

У меня есть tibble :

 athletes <-athletes %>%
            clean_names() %>% 
            rename(atheletes_id = id)

athletes_with_mutli_country <- country %>%
  select(athlete_id, NOC) %>%
  unique()
 

с этими данными:

введите описание изображения здесь

и т.д.

Я хотел бы определить, когда athelete_id присутствует более одного раза. Как было бы проще всего это сделать?

Лучше всего, Стивен

Комментарии:

1. country %>% group_by(athlete_id) %>% mutate(nb_id = n(), duplicated_id = ifelse(nb_id > 1, 'dup', 'no_dup'))

Ответ №1:

Зависит от того, что вы подразумеваете под простым. Ответ Дэвидса описывает, как это сделать в базе R. Если вы хотите просто, как в строках кода, вы можете использовать janitor пакет.

 if(!require("janitor")){
    install.packages("janitor")
}

# returns the df with a new column "dupe_count" which shows number of entries with same column(s):

athletes %>% 
    janitor::get_dupes(atheletes_id)
 

Ответ №2:

Это может помочь

 library(tidyverse)

tibble(x  = c(1:5, 5:10),
       y = LETTERS[1:11]) %>% 
  group_by(x) %>% 
  mutate(count = n())

 

Ответ №3:

Это помогло бы прояснить вопрос, если бы вы могли показать ожидаемый результат. Я предполагаю, что вы хотите удалить повторяющиеся идентификаторы athlete_ids из вашего фрейма данных.

В базе R есть функция duplicated , которая может находить повторяющиеся значения в векторе. Вы можете использовать это плюс операторы подстановки, чтобы удалить дублирующихся спортсменов из вашего фрейма данных. Вот пример:

 # Create sample data
athletes <- read.table(header = TRUE, text = '
athlete_id  NOC
183         UAR
184         EGY
185         EGY
186         UAR
187         EGY
188         EGY
189         SUD
184         EGY
191         EGY
192         EGY
193         UAR
183         UAR
195         EGY')

# Detect duplicates
dupes <- duplicated(athletes$athlete_id)

# Remove duplicates
athletes[!dupes, ]
#    athlete_id NOC
# 1         183 UAR
# 2         184 EGY
# 3         185 EGY
# 4         186 UAR
# 5         187 EGY
# 6         188 EGY
# 7         189 SUD
# 9         191 EGY
# 10        192 EGY
# 11        193 UAR
# 13        195 EGY