R语言 如何重命名因子水平
在这篇文章中,我们将介绍如何在R编程语言中重命名因子水平。
R语言中的因子变量是用分类变量来表示的,而分类变量是用不同的级别来表示的。每个独特的值都用一个独特的级别值来表示。R语言中的因子变量或向量可以用 factor() 方法来声明。
语法: factor(vec)
参数: vec – 矢量
因子的唯一水平可以通过level()方法提取,该方法以创建的因子向量为参数。它显示因子变量中的所有唯一条目。
语法: level(fac-vec)
参数: fac-vec – 要提取数值的因子向量
方法1:使用 基本的R方法
可以使用比较和索引操作符来重新命名因子水平。对现有的因子值进行比较,然后通过将其分配给一个新的值进行修改。这些修改是对现有因子向量进行的。遵循以下语法:
语法: level(fac-vec)[level(fac-vec)==old-val] <- new-val
参数: fac-vec – 要提取数值的因子向量
# declare a factor
val < - factor(c("Geeks", "For", "Geeks",
"Coding", "Fun"))
# printing the levels of factor variables
print("Levels of factor")
lvls < - levels(val)
print(lvls)
# renaming the factors
levels(val)[levels(val) == "Coding"] < - "Learning"
print("Modified Levels of factor")
lvls < - levels(val)
print(lvls)
输出
[1] "Levels of factor"
[1] "Coding" "For" "Fun" "Geeks"
[1] "Modified Levels of factor"
[1] "Learning" "For" "Fun" "Geeks"
list()方法也可以用来创建一个要创建的因子水平列表,然后可以重新赋值给新的值。然后,level()被重新赋值给这些新声明的值。这些改变是对原始因子向量的改变。使用这个方法可以重命名一个以上的因子。
list(new-fac=val = old-fac-val,..)
在list()方法中声明了新旧因子变量值的组合。
# declare a factor
val <- factor(c("Geeks","For","Geeks",
"Coding","Fun"))
# printing the levels of factor variables
print("Levels of factor")
lvls <- levels(val)
print(lvls)
# renaming the factors
levels(val) <- list("Learning"="Fun",
"Programming"="Coding")
print("Modified Levels of factor")
print(levels(val))
输出
[1] "Levels of factor"
[1] "Coding" "For" "Fun" "Geeks"
[1] "Modified Levels of factor"
[1] "Learning" "Programming"
一个因子变量的所有等级也可以用c()方法重新命名,以创建一个等级向量。然后,新创建的值被分配给一个因子变量。下面的代码片段说明了这个过程。
# declare a factor
val <- factor(c("Geeks","For","Geeks",
"Coding","Fun"))
# printing the levels of factor variables
print("Levels of factor")
lvls <- levels(val)
print(lvls)
# renaming the factors
levels(val) <- c("Hi","There",
"Welcome","Here")
print("Modified Levels of factor")
print(levels(val))
输出
[1] "Levels of factor"
[1] "Coding" "For" "Fun" "Geeks"
[1] "Modified Levels of factor"
[1] "Hi" "There" "Welcome" "Here"
方法2:使用revalue()方法
R中的plyr包是用来将数据分割开来,对其进行操作,并将其重新组合在一起。该包可以通过以下命令下载并安装到工作空间。
install.packages("plyr")
本软件包中的重值方法用于用新定义的值替换因子向量中的指定值。在这种情况下,因子变量的水平不会被修改,仍然是原始的。
语法: revalue(x, replace = NULL)
参数:
- x – 因子向量
- replace – 因子向量,新值为数值,旧值为名称。
# importing req libraries
library("plyr")
# declare a factor
val <- factor(c("Geeks","For","Geeks",
"Coding","Fun"))
# printing the levels of factor variables
print("Levels of factor")
lvls <- levels(val)
print(lvls)
# renaming the factors
revalue(val, c("Fun"= "Learning", "Coding"= "Programming"))
print("Modified Levels of factor")
print(levels(val))
输出
[1] "Levels of factor"
[1] "Coding" "For" "Fun" "Geeks"
Geeks For Geeks Programming Learning
Levels:
[1] "Modified Levels of factor"
[1] "Coding" "For" "Fun" "Geeks"
方法3:使用mapvalues()方法
R中plyr包中的mapvalues()方法被用来在因子向量中用新的数值替换指定的数值。这些变化不会保留在原始向量中。
语法: mapvalues(x, from, to)
参数:
- x – 要修改的因子向量
- from – 要替换的项目的一个向量
- to – 替换值的一个向量
# importing req libraries
library("plyr")
# declare a factor
val <- factor(c("Geeks","For","Geeks",
"Coding","Fun"))
# printing the levels of factor variables
print("Levels of factor")
lvls <- levels(val)
print(lvls)
# renaming the factors
mapvalues(val, from = c("Fun","Coding"),
to = c("Learning", "Programming"))
print("Modified Levels of factor")
print(levels(val))
输出
[1] "Levels of factor"
[1] "Coding" "For" "Fun" "Geeks"
Geeks For Geeks Programming Learning
Levels:
[1] "Modified Levels of factor"
[1] "Coding" "For" "Fun" "Geeks"