我想将分类数据转换为数字,以便可以使用一些软件包。
下面的代码可以做到这一点。
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
此外,尽管虹膜数据只有一个分类变量,但我的有很多。
答案 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"
您想要这样的东西吗?