我想将R中的因子变量转换为二进制。对于著名的虹膜,我希望如果不是虹彩,请将其重新编码为其他。我已经考虑过类似的事情,但是它没有按预期工作。我能做什么?
for(i in 1:150) {
if(iris$Species[i]=="virginica"||iris$Species[i]=="setosa") {
iris$Species[i]="other"
}
}
在这种情况下,使用列表重新分配级别可能会有所帮助。
levels(iris$Species) <-
list(versicolor = "versicolor",
other = c("setosa", "virginica"))
levels(iris$Species)
一个更通用的方法(如果您要处理的级别很多)可能是:
levels(iris$Species) <-
list(versicolor = "versicolor",
other = levels(iris$Species)[!levels(iris$Species) %in% "versicolor"])
levels(iris$Species)
缺点是,这将覆盖您的原始数据。如果是我,我会做更多的事情:
iris$versicolor <- iris$Species
levels(iris$versicolor) <-
list(versicolor = "versicolor",
other = levels(iris$versicolor)[!levels(iris$versicolor) %in% "versicolor"])
levels(iris$versicolor)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句