R 因子(Factors)

R 因子(Factors) 首页 / R入门教程 / R 因子(Factors)

因子(Factors)是一种数据结构,用于仅采用预定义的有限数量的值的字段。这些是采用有限数量的不同值的变量。这些是数据对象,用于对数据进行分类并将其存储在多个级别上。它既可以存储整数值也可以存储字符串值,并且在唯一值数量有限的列中很有用。

R factors

因子具有与存储在其中的唯一整数关联的标签。它包含称为级别的预定义设置值,默认情况下,R始终按字母顺序对级别排序。

R中有一个因子的以下属性

R factors
  1. X               -   输入向量将被转换为一个因子。
  2. levels      -   它是一个输入向量,代表x所取的一组唯一值。
  3. lavels      -   它是一个字符向量,对应于标签的数量。
  4. Exclude  -  它用于指定我们要排除的值,
  5. ordered  -  这是一个逻辑属性,它确定级别是否有序。
  6. nmax       -  用于指定最大级别数的上限。

创建因子

在R中,创建因子非常简单。分两个步骤创建因子

  1. 第一步,我们创建一个向量。
  2. 下一步是将向量转换为因子,

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)
  1. n   -  表示级别数。
  2. k   -  表示复制数量。
  3. 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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Swift核心技术与实战 -〔张杰〕

苏杰的产品创新课 -〔苏杰〕

系统性能调优必知必会 -〔陶辉〕

WebAssembly入门课 -〔于航〕

代码之丑 -〔郑晔〕

Spring Cloud 微服务项目实战 -〔姚秋辰(姚半仙)〕

超级访谈:对话玉伯 -〔玉伯〕

手把手带你搭建推荐系统 -〔黄鸿波〕

结构思考力 · 透过结构看表达 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)