首页 > 解决方案 > 将因子转换为数字后保留变量名称

问题描述

我想将我的分类数据转换为数字,所以我可以使用一些包。

下面的代码就是这样做的。

     data("iris")
     str(iris)
     must_convert<-sapply(iris,is.factor)       # logical vector telling if a variable needs to be displayed as numeric
     M2<-sapply(iris[,must_convert],as.numeric)    # data.frame of all categorical variables now displayed as numeric
     out<-cbind(iris[,!must_convert],M2) #output based on original dataframe

问题是,对于某些变量,有 10 个级别,仅转换为数字是不够的,因为显然手动检查哪个数字是哪个因子效率不高。我正在尝试将数字转换为因子或列表,例如:

    iris_factors_to_numbers

    Species
    setosa         = 1
    versicolor     = 2
    virginica      = 3

此外,虽然 iris 数据只有一个分类变量,但我的却有很多。

标签: rprintinglapplycat

解决方案


keepvalues <- function(data) {
  filteredata <- data[sapply(data, class)=="factor"]
  result <- lapply(filteredata, function(x) paste0(levels(x), " = ", unique(as.numeric(x))))
  return(result)
}

keepvalues(iris)

$`Species`
[1] "setosa = 1"     "versicolor = 2" "virginica = 3" 

你想要这样的东西吗?


推荐阅读