因子(Factors)是一种数据结构,用于仅采用预定义的有限数量的值的字段。这些是采用有限数量的不同值的变量。这些是数据对象,用于对数据进行分类并将其存储在多个级别上。它既可以存储整数值也可以存储字符串值,并且在唯一值数量有限的列中很有用。
因子具有与存储在其中的唯一整数关联的标签。它包含称为级别的预定义设置值,默认情况下,R始终按字母顺序对级别排序。
R中有一个因子的以下属性
在R中,创建因子非常简单。分两个步骤创建因子
R提供factor()函数以将向量转换为factor。 factor()函数具有以下语法
factor_data<- factor(vector)
让我们看一个示例,以了解如何使用因子函数。
示例
# 创建一个向量作为输入。 data <- c("Learnfk","Chromefk","Toolfk","Chromefk","Learnfk","Nesfk","Chromefk","Learnfk","Nesfk","Toolfk","Nesfk") print(data) print(is.factor(data)) # 应用因子函数。 factor_data<- factor(data) print(factor_data) print(is.factor(factor_data))
输出
[1] "Learnfk" "Chromefk" "Toolfk" "Chromefk" "Learnfk" "Nesfk" "Chromefk" [8] "Learnfk" "Nesfk" "Toolfk" "Nesfk" [1] FALSE [1] Learnfk Chromefk Toolfk Chromefk Learnfk Nesfk Chromefk Learnfk Nesfk [10] Toolfk Nesfk Levels: Toolfk Chromefk Learnfk Nesfk [1] TRUE
像向量一样,我们可以访问因子的组成部分。访问因子分量的过程与向量更相似。我们可以借助索引方法或使用逻辑向量来访问元素。让我们看一个示例,在该示例中我们了解访问组件的不同方式。
示例
# 创建一个向量作为输入。 data <- c("Learnfk","Chromefk","Toolfk","Chromefk","Learnfk","Nesfk","Chromefk","Learnfk","Nesfk","Toolfk","Nesfk") #应用因子函数。 factor_data<- factor(data) #打印因子的所有元素 print(factor_data) #访问因子的第四个元素 print(factor_data[4]) #访问第 5 个和第 7 个元素 print(factor_data[c(5,7)]) #访问除第四个之外的所有元素 print(factor_data[-4]) #使用逻辑向量访问元素 print(factor_data[c(TRUE,FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,TRUE)])
输出
[1] Learnfk Chromefk Toolfk Chromefk Learnfk Nesfk Chromefk Learnfk Nesfk [10] Toolfk Nesfk Levels: Toolfk Chromefk Learnfk Nesfk [1] Chromefk Levels: Toolfk Chromefk Learnfk Nesfk [1] Learnfk Chromefk Levels: Toolfk Chromefk Learnfk Nesfk [1] Learnfk Chromefk Toolfk Learnfk Nesfk Chromefk Learnfk Nesfk Toolfk [10] Nesfk Levels: Toolfk Chromefk Learnfk Nesfk [1] Learnfk Learnfk Nesfk Chromefk Nesfk Levels: Toolfk Chromefk Learnfk Nesfk
像数据框(data frame)一样,R允许我们修改因子。我们可以通过简单地重新分配因子来修改它的值。在R中,我们不能选择超出其预定义级别的值,这意味着如果其级别不存在,则无法插入值。为此,我们必须创建该值的级别,然后将其添加到我们的因子中。
让我们看一个示例,以了解如何在因子中进行修改。
示例
# 创建一个向量作为输入。 data <- c("Learnfk","Chromefk","Toolfk","Chromefk","Learnfk") # 应用因子函数。 factor_data<- factor(data) #打印因子的所有元素 print(factor_data) #改变因子的第 4 个元素值 factor_data[4] <-"Toolfk" print(factor_data) #用“Poemfk”改变因子的第四个元素 factor_data[4] <- "Poemfk" print(factor_data) #将值添加到级别 levels(factor_data) <- c(levels(factor_data),"Poemfk") factor_data[4] <- "Poemfk" print(factor_data)
输出
[1] Learnfk Chromefk Toolfk Chromefk Learnfk Levels: Toolfk Chromefk Learnfk [1] Learnfk Chromefk Toolfk Toolfk Learnfk Levels: Toolfk Chromefk Learnfk Warning message: In `[ Learnfk Levels: Toolfk Chromefk Learnfk [1] Learnfk Chromefk Toolfk Poemfk Learnfk Levels: Toolfk Chromefk Learnfk Poemfk
当我们创建一个数据框(data frame)的文本数据,R对待这个文本列分类数据的列和它创造的因子。
示例
# 为数据框创建向量。 height <- c(132,162,152,166,139,147,122) weight <- c(40,49,48,40,67,52,53) gender <- c("male","male","female","female","male","female","male") # 创建数据框。 input_data<- data.frame(height,weight,gender) print(input_data) # 测试gender列是否是一个因素。 print(is.factor(input_data$gender)) # 打印gender列以查看级别。 print(input_data$gender)
输出
height weight gender 1 132 40 male 2 162 49 male 3 152 48 female 4 166 40 female 5 139 67 male 6 147 52 female 7 122 53 male [1] TRUE [1] male male female female male female male Levels: female male
在R,我们可以用要素函数的帮助下更改因子级别的顺序。
示例
data <- c("Chromefk","Poemfk","Learnfk","Toolfk","Toolfk","Nesfk","Poemfk","Learnfk")
# 创建因素
factor_data<- factor(data)
print(factor_data)
# 应用具有所需级别顺序的因子函数。
new_order_factor<- factor(factor_data,levels = c("Poemfk","Chromefk","Toolfk","Learnfk","Nesfk"))
print(new_order_factor)
输出
[1] Chromefk Poemfk Learnfk Toolfk Toolfk Nesfk Poemfk Learnfk Levels: Toolfk Poemfk Chromefk Learnfk Nesfk [1] Chromefk Poemfk Learnfk Toolfk Toolfk Nesfk Poemfk Learnfk Levels: Poemfk Chromefk Toolfk Learnfk Nesfk
提供GL()函数生成因子级别(level)。此函数采用三个参数,即n,k和标签。这里,n和k这表明有多少级别,我们需要多少时间,则需要每个级别的整数。
链接:https://www.learnfk.comhttps://www.learnfk.com/R/r-factors.html
来源:LearnFk无涯教程网
gl()函数的语法如下:
gl(n, k, labels)
示例
gen_factor<- gl(3,5,labels=c("BCA","MCA","B.Tech"))
gen_factor
输出
[1] BCA BCA BCA BCA BCA MCA MCA MCA MCA MCA [11] B.Tech B.Tech B.Tech B.Tech B.Tech Levels: BCA MCA B.Tech
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
Spring Cloud 微服务项目实战 -〔姚秋辰(姚半仙)〕