📜  R 编程中的虚拟变量

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

R 编程中的虚拟变量

R 编程是数据挖掘和数据可视化最常用的语言之一。使用这种语言,可以处理任何类型的机器学习算法,如回归、分类等。在回归分析中使用虚拟编码对变量进行分类。 R编程中的虚拟变量是一种代表实验特征的变量。虚拟变量是 1 或 0,1 可以表示为 True 或 False,0 可以表示为 False 或 True,具体取决于用户。该变量用于对观察的特征进行分类。例如,一个人是男性还是女性,纪律是好是坏等。此外,将相应地创建新列,将指定该人是否为男性,作为gender_m的二进制值以及该人是否为女性或不作为gender_f 的二进制值。
原始数据框:
虚拟变量
创建虚拟变量后:
虚拟变量

在本文中,让我们讨论在 R 中使用 2 种方法创建虚拟变量,即ifelse()方法,另一种是使用dummy_cols()函数。

使用ifelse()函数

ifelse()函数执行测试并根据测试结果返回函数参数中提供的真值或假值。使用此函数,可以相应地创建虚拟变量。

示例 1:

# Using PlantGrowth dataset
pg <- PlantGrowth
  
# Print
cat("Original dataset:\n")
head(pg, 20)
  
# Create dummy variable
pg$group_ctr1 <- ifelse(pg$group == "ctrl", 1, 0)
  
# Print
cat("After creating dummy variable:\n")
head(pg, 20)

输出:

Original dataset:
   weight group
1    4.17  ctrl
2    5.58  ctrl
3    5.18  ctrl
4    6.11  ctrl
5    4.50  ctrl
6    4.61  ctrl
7    5.17  ctrl
8    4.53  ctrl
9    5.33  ctrl
10   5.14  ctrl
11   4.81  trt1
12   4.17  trt1
13   4.41  trt1
14   3.59  trt1
15   5.87  trt1
16   3.83  trt1
17   6.03  trt1
18   4.89  trt1
19   4.32  trt1
20   4.69  trt1

After creating dummy variable:
   weight group group_ctr1
1    4.17  ctrl          1
2    5.58  ctrl          1
3    5.18  ctrl          1
4    6.11  ctrl          1
5    4.50  ctrl          1
6    4.61  ctrl          1
7    5.17  ctrl          1
8    4.53  ctrl          1
9    5.33  ctrl          1
10   5.14  ctrl          1
11   4.81  trt1          0
12   4.17  trt1          0
13   4.41  trt1          0
14   3.59  trt1          0
15   5.87  trt1          0
16   3.83  trt1          0
17   6.03  trt1          0
18   4.89  trt1          0
19   4.32  trt1          0
20   4.69  trt1          0

示例 2:

# Create a dataframe
df <- data.frame(gender = c("m", "f", "m"),
                 age = c(19, 20, 20),
                 city = c("Delhi", "Mumbai", 
                                   "Delhi"))
  
# Print original dataset
print(df)
  
# Create dummy variable
df$gender_m <- ifelse(df$gender == "m", 1, 0)
df$gender_f <- ifelse(df$gender == "f", 1, 0)
  
# Print resultant
print(df)

输出:

gender age   city
1      m  19  Delhi
2      f  20 Mumbai
3      m  20  Delhi

  gender age   city gender_m gender_f
1      m  19  Delhi        1        0
2      f  20 Mumbai        0        1
3      m  20  Delhi        1        0

使用dummy_cols()函数

dummy_cols()函数存在于fastDummies包中。它根据函数中提供的参数创建虚拟变量。如果在必须为其创建虚拟变量的函数调用中未选择列,则为数据框中的所有字符和因子列创建虚拟变量。

示例 1:

# Install the required package
install.packages("fastDummies")
  
# Load the library
library(fastDummies)
  
# Using PlantGrowth dataset
data <- PlantGrowth
  
# Create dummy variable
data <- dummy_cols(data, 
                   select_columns = "group")
  
# Print
print(data)

输出:

weight group group_ctrl group_trt1 group_trt2
1    4.17  ctrl          1          0          0
2    5.58  ctrl          1          0          0
3    5.18  ctrl          1          0          0
4    6.11  ctrl          1          0          0
5    4.50  ctrl          1          0          0
6    4.61  ctrl          1          0          0
7    5.17  ctrl          1          0          0
8    4.53  ctrl          1          0          0
9    5.33  ctrl          1          0          0
10   5.14  ctrl          1          0          0
11   4.81  trt1          0          1          0
12   4.17  trt1          0          1          0
13   4.41  trt1          0          1          0
14   3.59  trt1          0          1          0
15   5.87  trt1          0          1          0
16   3.83  trt1          0          1          0
17   6.03  trt1          0          1          0
18   4.89  trt1          0          1          0
19   4.32  trt1          0          1          0
20   4.69  trt1          0          1          0
21   6.31  trt2          0          0          1
22   5.12  trt2          0          0          1
23   5.54  trt2          0          0          1
24   5.50  trt2          0          0          1
25   5.37  trt2          0          0          1
26   5.29  trt2          0          0          1
27   4.92  trt2          0          0          1
28   6.15  trt2          0          0          1
29   5.80  trt2          0          0          1
30   5.26  trt2          0          0          1

示例 2:

# Create a dataframe
df <- data.frame(gender = c("m", "f", "m"),
                 age = c(19, 20, 20),
                 city = c("Delhi", "Mumbai", 
                                  "Delhi"))
  
# Create dummy variables
# select_columns = NULL uses all 
# character and factor columns
# to create dummy variable
df <- dummy_cols(df)
  
# Print
print(df)

输出:

gender age   city gender_f gender_m city_Delhi city_Mumbai
1      m  19  Delhi        0        1          1           0
2      f  20 Mumbai        1        0          0           1
3      m  20  Delhi        0        1          1           0