R语言 如何创建分类变量
在这篇文章中,我们将学习如何在R编程语言中创建分类变量。
在统计学中,变量可以分为两类,即分类变量和定量变量。由可量化的数值组成的变量被称为定量变量,而分类变量是一种可以采取有限的、通常是固定的、可能的数值之一的变量,根据一些定性的属性将每个个体或其他观察单位分配到一个特定的组或名义类别。
方法1:从头开始的分类变量
为了从头开始创建一个分类变量,即通过为每一行数据提供手动值,我们使用factor()函数并传递要转换为分类变量的数据列。这个factor()函数通过将相同的值分组,将定量变量转换为分类变量。
语法 。
df$categorical_variable <- factor( categorical_vector )
其中
- df: 决定了数据框架。
- categorical_variable: 决定了最终的列变量,它将包含分类数据。
- categorical_vector: 是需要转换的向量。
例子 。
这里是一个基本的数据框架,其中一个新的列组被添加为分类变量。
# create sample data frame
df <- data.frame(x=c(10, 23, 13, 41, 15),
y=c(71, 17, 28, 32, 12))
# create categorical vector
group_vector <- c('A','B','C','D','E')
# Add categorical variable to the data frame
df$group <- factor(group_vector)
# print data frame
df
输出 。
x y group
1 10 71 A
2 23 17 B
3 13 28 C
4 41 32 D
5 15 12 E
方法2:使用两个值从现有的列中创建分类变量
为了从现有的列中创建一个分类变量,我们在factor()函数中使用一个if-else语句,如果某个条件为真,就给一个列一个值,否则就给另一个值。
语法 。
df$categorical_variable <- as.factor( ifelse(condition, val1, val2) )
其中
- df: 决定了数据框架。
- categorical_variable: 确定最终的列变量,它将包含分类数据。
- condition: 确定要检查的条件,如果条件为真,则使用val1,否则使用val2。
例子 。
这里,是一个基本的数据框架,其中一个新的列组被添加为一个来自if-else条件的分类变量。
# create sample data frame
df <- data.frame(x=c(10, 23, 13, 41, 15),
y=c(71, 17, 28, 32, 12))
# Add categorical variable to the data frame
dfgroup <- as.factor(ifelse(dfx >20, 'A', 'B'))
# print data frame
df
输出 。
x y group
1 10 71 B
2 23 17 A
3 13 28 B
4 41 32 A
5 15 12 B
方法3:使用多个值从现有的列中创建分类变量
为了从现有的列中创建一个分类变量,我们在factor()函数中使用多个if-else语句,如果某个条件为真,就给一个列一个值,如果没有一个条件为真,就使用最后一个语句的else值。
语法 。
df$categorical_variable <- as.factor( ifelse(condition, val,ifelse(condition, val, ifelse(condition, val, vale_else))))))
其中
- df: 决定了数据框架。
- categorical_variable: 决定最终的列变量,它将包含分类数据。
- condition: 确定要检查的条件,如果条件为真,则使用val。
- val_else: 决定了如果没有条件为真时的值。
例子 。
这里,是一个基本的数据框架,一个新的列组被添加为来自多个if-else条件的分类变量。
# create sample data frame
df <- data.frame(x=c(10, 23, 13, 41, 15, 11, 23, 45, 95, 23, 75),
y=c(71, 17, 28, 32, 12, 13, 41, 15, 11, 23, 34))
# Add categorical variable to the data frame
dfgroup <- as.factor(ifelse(dfx<20, 'A',
ifelse(dfx<30, 'B',
ifelse(dfx<50, 'C',
ifelse(df$x<90, 'D', 'E')))))
# print data frame
df
输出 。
x y group
1 10 71 A
2 23 17 B
3 13 28 A
4 41 32 C
5 15 12 A
6 11 13 A
7 23 41 B
8 45 15 C
9 95 11 E
10 23 23 B
11 75 34 D