将因子转换为数字后保留变量名称

时间:2019-05-02 16:47:00

标签: r printing lapply cat

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

下面的代码可以做到这一点。

     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

此外,尽管虹膜数据只有一个分类变量,但我的有很多。

1 个答案:

答案 0 :(得分:0)

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" 

您想要这样的东西吗?