#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