代码之家  ›  专栏  ›  技术社区  ›  Bonono

如何在R中计算模式,但去除NA值

  •  3
  • Bonono  · 技术社区  · 9 年前

    我能够使用

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

    然而,我的数据帧中的NA值比整数多,所以当我运行此模式时,我会返回NA。

    是否有方法以某种方式删除上述函数中的NA值,或者我是否需要从数据帧中删除NA值?如果是,如何?我试过了

    DF.omit.NA<- na.omit(DF) ###and na.exclude
    

    它没有产生任何数据行。

    1 回复  |  直到 9 年前
        1
  •  6
  •   akrun    9 年前

    我们可以使用 na.omit 包裹在 unique 元素

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

    数据

    v1 <- c(1, 3, NA, 2, 1, 1, NA, NA, NA)