计算数据框中所有非数字列的模式

时间:2018-08-05 02:16:56

标签: r statistics

我想从数据框中计算每列的模式。我发现过类似的文章,内容涉及如何确定数据帧中行向量的模式(但大多数情况下都是使用数字数据)。

df <- data.frame(c("A","B","C","C"), c("A","A","B","C"),c("A","B","B","C"))
colnames(df) <- c("V1","V2","V3")
rownames(df) <- c(1,2,3,4)
df

我正在使用以下功能:

modefunc <- function(x){
    tabresult <- tabulate(x)
    themode <- which(tabresult == max(tabresult))
    if(sum(tabresult == max(tabresult))>1) themode <- NA
    return(themode)
}

mode.vector <- apply(df, 1, modefunc)

由于我的数据框不是数字的,因此很不幸出现以下错误:

Error in tabulate(x) : 'bin' must be numeric or a factor

任何与此有关的帮助都会有所帮助。预先感谢。

1 个答案:

答案 0 :(得分:0)

我对您的功能做了些改动。

modefunc <- function(x){
  x<-c(as.character(x) ,use.names = F,  recursive = TRUE )
  tabresult <- table(x)
  mod<-sort(table(x),decreasing = T)[1]
  mod_name<-names(mod)
  if(sum(tabresult == mod)>1) themode <- NA
  return(mod_name)
}

mode.vector <- apply(df, 1, modefunc)
 1   2   3   4 
"A" "B" "B" "C"