Я ищу функцию режима в R, которую я могу использовать для dplyr.Два поста, которые я видел, трактуют «галстуки» совсем по-другому. Этот пост (Кен Уильямс) рассматривает связи, выбирая первое появившееся значение из набора режимов. Этот пост рассматривает связи, отмечая оба значения в одной и той же ячейке.
Я ищу функцию режима, которая обрабатывает связи как NA и исключает пропущенные значения.Я использовал пост Грегора , чтобы рассматривать связи как NA, но я не могу исключить пропущенные значения.
Переменная DF $ Color является символьным типом.
Вот пример DF
Category<-c("A","B","B","C","A","A","A","B","C","B","C","C", "D", "D")
Color<-c("Red","Blue","Yellow","Blue","Green","Blue","Green","Yellow","Blue","Red","Red","Red","Yellow", NA)
DF<-data.frame(Category,Color)
DF <- arrange(DF, Category)
DF
DF$Color <- as.character(DF$Color)
С учетом NA код выглядит следующим образом:
mode <- function(x) {
ux <- unique(x)
tx <- tabulate(match(x, ux))
if(length(unique(tx)) == 1) {
return(NA)
}
max_tx <- tx == max(tx)
return(ux[max_tx])
}
DF %>%
group_by(Category) %>%
summarise(Mode = mode(Color))
Я пытаюсь выяснить код, который исключает NA.DF будет выглядеть так:
Category Mode
<fct> <fct>
1 A Green
2 B Yellow
3 C NA
4 D Yellow