显然,dplyr的总结功能并未包含"模式"的选项。基于下面的简单数据框示例,我想确定每组"类别的模式或最常重复的数字。"因此对于组" A",模式是22,对于" B",它的12和14,并且没有重复的数字用于" C&#34 ;。
我在网上找到了一些函数示例,但没有一个解决了组中没有重复数字的情况。是否需要自定义功能,或者某处是否有模式选项?我不想仅仅因为他们的模式功能而依赖任何其他专门的包。使用基础R,dplyr,整洁等组合找到优雅而简单的解决方案会很不错。
如果使用自定义功能,则在没有重复数字时,以及当有多个同等重复数字时,它必须工作。
任何帮助将不胜感激!这似乎应该是R中的一个简单的解决方案,所以我很惊讶地发现没有简单的summarise_each(funs(mode)...选项。
如果使用自定义功能,请按说明进行细分。我对R函数还是比较新的。
Category<-c("A","B","B","C","A","A","A","B","C","B","C","C")
Number<-c(22,12,12,8,22,22,18,14,10,14,1,3)
DF<-data.frame(Category,Number)
答案 0 :(得分:4)
我们可以使用
Mode <- function(x) {
ux <- unique(x)
if(!anyDuplicated(x)){
NA_character_ } else {
tbl <- tabulate(match(x, ux))
toString(ux[tbl==max(tbl)])
}
}
DF %>%
group_by(Category) %>%
summarise(NumberMode = Mode(Number))
# Category NumberMode
# <fctr> <chr>
#1 A 22
#2 B 12, 14
#3 C <NA>