因子(Factor)是一种用于处理可分类数据的结构。
假设一个数据字段,例如婚姻状况,可能只包含“单身”、“已婚”、“分居”、“离婚”或“丧偶”这几个值。
在这种情况下,我们事先知道可能的值,而这些预定义的、不同的值称为因子的“级别”(levels)。
在 R 中创建因子
在 R 中,我们使用 factor()
函数来创建因子。一旦创建了因子,它就只能包含预定义的集合值,这些值称为级别。
创建因子的语法是:
factor(vector)
这里,factor()
以一个向量作为参数。
让我们看一个例子,
# create a factor
students_gender <- factor(c("male", "female", "male", "transgender", "female"))
# print the marital_status factor
print(students_gender)
输出
[1] male female male transgender female Levels: female male transgender
在上面的示例中,我们使用 factor()
函数创建了一个名为 students_gender 的因子。
请注意,在打印 students_gender 时,我们得到了两个输出:
- 所有向量中的项
- 预定义的可能值,我们事先知道,即 students_gender 的级别
访问因子元素
访问向量元素的语法与访问向量元素类似。我们使用索引号。例如:
# create a factor
students_gender <- factor(c("male", "female", "male", "transgender", "female"))
# access 1st element of students_gender
print(students_gender[1])
# access 4th element of students_gender
print(students_gender[4])
输出
[1] male Levels: female male transgender [1] transgender Levels: female male transgender
在上面的示例中,我们使用索引号来访问 students_gender 的元素。
- students_gender[1] - 返回 students_gender 的第一个元素,即
"male"
- students_gender[4] - 返回 students_gender 的第四个元素,即
"transgender"
请注意,每次我们访问和打印因子元素时,也会同时显示因子的级别。
修改因子元素
要更改向量元素,我们可以简单地将新值重新分配给特定的索引。例如:
# create a factor
marital_status <- factor(c("married", "single", "single", "divorced", "married"))
# print the marital_status factor
marital_status[1] <- "divorced"
print(marital_status[1])
输出
[1] divorced Levels: divorced married single
在这里,我们已经将 marital_status 因子的索引 1 的值重新分配为 "divorced"
,以替换原来的 "married"
。
常见问题
如何在 R 中查找因子的长度?
在 R 中,我们使用 length()
函数来查找因子中存在的项的数量。例如:
# create a factor
marital_status <- factor(c("married", "single", "single", "divorced", "married"))
cat("Total Elements:", length(marital_status))
输出
Total Elements: 5
如何在 R 中遍历因子?
在 R 中,我们也可以使用 for 循环来遍历因子的每个元素。例如:
# create a factor
marital_status <- factor(c("married", "single", "single", "divorced", "married"))
# iterate through each elements of marital_status
for (status in marital_status) {
print(status)
}
输出
[1] "married" [1] "single" [1] "single" [1] "divorced" [1] "married"