如何计算R中的模式但删除NA值

Bon*_*ono 3 r mode na

我能够使用计算模式

Mode <- function(x) {
 ux <- unique(x) 
tab <- tabulate(match(x, ux)); ux[tab == max(tab)]
}
Run Code Online (Sandbox Code Playgroud)

但是,我的数据框中的 NA 值比整数多,因此当我运行此模式时,我会返回 NA。

有没有办法以某种方式删除上述函数中的 NA 值,或者我是否需要最初从数据框中删除 NA 值?如果是这样,如何?我试过

DF.omit.NA<- na.omit(DF) ###and na.exclude
Run Code Online (Sandbox Code Playgroud)

它没有产生任何数据行。

akr*_*run 5

我们可以使用na.omit环绕unique元素

Mode <- function(x) {
  ux <- na.omit(unique(x) )
 tab <- tabulate(match(x, ux)); ux[tab == max(tab) ]
}

Mode(v1)
#[1] 1
Run Code Online (Sandbox Code Playgroud)

数据

v1 <- c(1, 3, NA, 2, 1, 1, NA, NA, NA)
Run Code Online (Sandbox Code Playgroud)