📜  如何在 R 中创建分类变量?

📅  最后修改于: 2022-05-13 01:54:27.687000             🧑  作者: Mango

如何在 R 中创建分类变量?

在本文中,我们将学习如何在 R 编程语言中创建分类变量。

在统计学中,变量可以分为两类,即分类变量和定量变量。由可量化的数值组成的变量称为定量变量,分类变量是可以采用有限且通常固定数量的可能值之一的变量,将每个个体或其他观察单位分配给特定组或基于某些定性属性的名义类别。

方法 1:从头开始的分类变量

要从头开始创建分类变量,即通过为每行数据手动赋值,我们使用 factor()函数并传递要转换为分类变量的数据列。此 factor()函数通过将相同的值组合在一起,将定量变量转换为分类变量。

句法:

df$categorical_variable <- factor( categorical_vector )

在哪里

  • df:确定数据框。
  • categorical_variable:确定将包含分类数据的最终列变量。
  • categorical_vector:是必须转换的向量。

例子:

这是一个基本数据框,其中添加了一个新列组作为分类变量。

R
# 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


R
# 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
df$group <- as.factor(ifelse(df$x >20, 'A', 'B'))
  
# print data frame
df


R
# 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
df$group <- as.factor(ifelse(df$x<20, 'A',
                     ifelse(df$x<30, 'B',
                     ifelse(df$x<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     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 条件的分类变量。

R

# 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
df$group <- as.factor(ifelse(df$x >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:确定将包含分类数据的最终列变量。
  • condition:确定要检查的条件,如果条件为真,则使用val。
  • val_else:如果没有条件为真,则确定该值。

例子:

这是一个基本数据框,其中添加了一个新列组作为来自多个 if-else 条件的分类变量。

R

# 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
df$group <- as.factor(ifelse(df$x<20, 'A',
                     ifelse(df$x<30, 'B',
                     ifelse(df$x<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