R语言 虚拟变量

R语言 虚拟变量

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

原始数据框:

R编程中的虚拟变量
创建虚拟变量后:

R编程中的虚拟变量

在这篇文章中,让我们讨论一下在R中使用两种方法来创建虚拟变量,即 ifelse() 方法和使用 dummy_cols() 函数。

使用ifelse()函数

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

语法:

ifelse(test, yes, no)

参数:

test: 代表测试条件

yes: 代表如果测试条件满足将执行的值

no: 代表如果测试条件不满足将执行的值

例1 :

# Using PlantGrowth dataset
pg <- PlantGrowth
  
# Print
cat("Original dataset:\n")
head(pg, 20)
  
# Create dummy variable
pggroup_ctr1 <- ifelse(pggroup == "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
dfgender_m <- ifelse(dfgender == "m", 1, 0)
dfgender_f <- ifelse(dfgender == "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 包中。它根据函数中提供的参数来创建虚拟变量。如果在函数调用中没有选择需要创建虚拟变量的列,那么将为数据框架中的所有字符和因子列创建虚拟变量。

语法:

dummy_cols(.data, select_columns = NULL)

参数:

.data: 代表要创建虚拟列的对象

select_columns: 代表要创建虚拟变量的列。

例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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程