R 中的因子:分类变量与连续变量
R 中的 Factor 是什么?
R 中的 Factor 是一种用于分类和存储数据的变量,它具有有限数量的不同值。它将数据存储为整数向量。R 中的 Factor 也称为分类变量,它将字符串和整数数据值存储为级别。Factor 主要用于 R 的统计建模和探索性数据分析。
在数据集中,我们可以区分两种变量:分类变量和连续变量。
- 在 R 中对分类变量的描述性统计中,值是有限的,并且通常基于特定的有限组。例如,R 中的分类变量可以是国家、年份、性别、职业。
- 然而,连续变量可以取任何值,从整数到小数。例如,我们可以拥有收入、股票价格等。
分类变量
R 中的分类变量存储在 factor 中。让我们检查下面的代码,将字符变量转换为 R 中的 factor 变量。机器学习算法不支持字符,唯一的方法是将字符串转换为整数。
语法
factor(x = character(), levels, labels = levels, ordered = is.ordered(x))
参数
- x:R 中分类数据的向量。需要是字符串或整数,而不是小数。
- Levels:x 取值的可能值的向量。此参数是可选的。默认值是向量 x 的唯一项列表。
- Labels:为 R 中的 x 分类数据添加标签。例如,1 可以带有标签“male”,而 0 可以带有标签“female”。
- ordered:确定 R 中分类数据的级别是否应排序。
示例
让我们创建一个 factor 数据框。
# Create gender vector gender_vector <- c("Male", "Female", "Female", "Male", "Male") class(gender_vector) # Convert gender_vector to a factor factor_gender_vector <-factor(gender_vector) class(factor_gender_vector)
输出
## [1] "character" ## [1] "factor"
当我们在 R 中执行机器学习任务时,将字符串转换为 factor 变量非常重要。
R 中的分类变量可以分为名义分类变量和有序分类变量。
名义分类变量
分类变量有几个值,但顺序不重要。例如,男性或女性。R 中的分类变量没有顺序。
# Create a color vector color_vector <- c('blue', 'red', 'green', 'white', 'black', 'yellow') # Convert the vector to factor factor_color <- factor(color_vector) factor_color
输出
## [1] blue red green white black yellow ## Levels: black blue green red white yellow
从 factor_color 中,我们无法看出任何顺序。
有序分类变量
有序分类变量确实具有自然顺序。我们可以通过 order = TRUE 指定顺序,从最低到最高,或通过 order = FALSE 从最高到最低。
示例
我们可以使用 summary 来计算 R 中每个 factor 变量的值。
# Create Ordinal categorical vector day_vector <- c('evening', 'morning', 'afternoon', 'midday', 'midnight', 'evening') # Convert `day_vector` to a factor with ordered level factor_day <- factor(day_vector, order = TRUE, levels =c('morning', 'midday', 'afternoon', 'evening', 'midnight')) # Print the new variable factor_day
输出
## [1] evening morning afternoon midday midnight evening
示例
## Levels: morning < midday < afternoon < evening < midnight # Append the line to above code # Count the number of occurence of each level summary(factor_day)
输出
## morning midday afternoon evening midnight ## 1 1 1 2 1
R 按照 levels 括号中指定的顺序将级别从“morning”排序到“midnight”。
连续变量
连续类变量是 R 中的默认值。它们存储为数字或整数。我们可以从下面的数据集中看到。mtcars 是一个内置数据集。它收集了不同类型汽车的信息。我们可以通过使用 mtcars 导入它并检查变量 mpg(每加仑英里数)的类。它返回一个数字值,表示一个连续变量。
dataset <- mtcars class(dataset$mpg)
输出
## [1] "numeric"