R 因子

17 Mar 2025 | 5 分钟阅读

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

R factors

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

因子的属性

R 中因子具有以下属性

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

如何创建因子?

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

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

R 提供了 factor() 函数将向量转换为因子。 以下是 factor() 函数的语法

让我们看一个例子来理解 factor 函数是如何使用的。

示例

输出

[1] "Shubham" "Nishka"  "Arpita"  "Nishka"  "Shubham" "Sumit"   "Nishka"
 [8] "Shubham" "Sumit"   "Arpita"  "Sumit"
[1] FALSE
 [1] Shubham Nishka Arpita Nishka Shubham Sumit Nishka Shubham Sumit
[10] Arpita Sumit
Levels: Arpita Nishka Shubham Sumit
[1] TRUE

访问因子的组件

与向量一样,我们可以访问因子的组件。 访问因子组件的过程与向量的过程非常相似。 我们可以借助索引方法或使用逻辑向量来访问元素。 让我们看一个例子,其中我们了解访问组件的不同方法。

示例

输出

[1] Shubham Nishka Arpita Nishka Shubham Sumit Nishka Shubham Sumit
[10] Arpita Sumit
Levels: Arpita Nishka Shubham Sumit

[1] Nishka
Levels: Arpita Nishka Shubham Sumit
 
[1] Shubham Nishka
Levels: Arpita Nishka Shubham Sumit

 [1] Shubham Nishka Arpita Shubham Sumit Nishka Shubham Sumit Arpita
[10] Sumit
Levels: Arpita Nishka Shubham Sumit

[1] Shubham Shubham Sumit Nishka Sumit
Levels: Arpita Nishka Shubham Sumit

因子的修改

与数据框一样,R 允许我们修改因子。 我们可以通过重新分配它来修改因子的值。 在 R 中,我们不能选择其预定义级别之外的值,这意味着如果该级别不存在,我们无法插入值。 为此,我们必须创建该值的级别,然后我们可以将其添加到我们的因子中。

让我们看一个例子来理解如何在因子中完成修改。

示例

输出

[1] Shubham Nishka Arpita Nishka Shubham
Levels: Arpita Nishka Shubham
[1] Shubham Nishka Arpita Arpita Shubham
Levels: Arpita Nishka Shubham
Warning message:
In `[<-.factor`(`*tmp*`, 4, value = "Gunjan") :
  invalid factor level, NA generated
[1] Shubham Nishka Arpita  Shubham
Levels: Arpita Nishka Shubham
[1] Shubham Nishka Arpita Gunjan Shubham
Levels: Arpita Nishka Shubham Gunjan

数据框中的因子

当我们使用文本数据列创建框架时,R 将此文本列视为分类数据,并对其创建因子。

示例

输出

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 中,我们可以借助因子函数更改因子中级别的顺序。

示例

输出

[1] Nishka Gunjan Shubham Arpita Arpita Sumit Gunjan Shubham
Levels: Arpita Gunjan Nishka Shubham Sumit
[1] Nishka Gunjan Shubham Arpita Arpita Sumit Gunjan Shubham
Levels: Gunjan Nishka Arpita Shubham Sumit

生成因子级别

R 提供了 gl() 函数来生成因子级别。 此函数接受三个参数,即 n、k 和 labels。 这里,n 和 k 是整数,指示我们想要多少个级别以及每个级别需要多少次。

以下是 gl() 函数的语法,如下所示

  1. n 表示级别的数量。
  2. k 表示复制的次数。
  3. labels 是结果因子级别的标签向量。

示例

输出

[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