【问题标题】:Keep variable names after converting factors to numbers将因子转换为数字后保留变量名称
【发布时间】:2019-09-21 05:46:27
【问题描述】:

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

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

     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 数据只有一个分类变量,但我的却有很多。

【问题讨论】:

  • 请您说明哪些软件包需要这种数字转换?
  • 例如 WGCNA 包中的 numbers2colors

标签: r printing lapply cat


【解决方案1】:
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" 

你想要这样的东西吗?

【讨论】:

  • 这太棒了,就像一个魅力。对于任何想要这样做的人,请记住您的变量必须是因子格式,而不是字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 2018-03-25
  • 2013-01-03
相关资源
最近更新 更多