Сохраняйте имена переменных после преобразования факторов в числа - PullRequest
0 голосов
/ 02 мая 2019

Я хочу преобразовать свои категориальные данные в числа, чтобы я мог использовать некоторые пакеты.

Код под этим.

     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 голосов
/ 02 мая 2019
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" 

Это то, что вы хотите?

...