R语言 如何使用model.matrix()或dplyr包的case_when()函数将分类变量转换为哑变量(dummy variables)
时间: 2024-09-30 21:08:07 浏览: 44
在R语言中,当你有一个分类变量(categorical variable),想要在模型中作为连续变量处理时,通常需要将其转换成哑变量(也称为虚拟变量或指示变量)。这是因为大多数线性模型(包括逻辑回归)无法直接处理名义变量,它们需要这类表示形式才能捕捉到类别之间的差异。
以下是两种常见的方法:
1. 使用`model.matrix()`函数:
```R
# 假设你的分类变量叫做'category'
HW93_dummies <- model.matrix(~ category - 1, data = HW93)
```
这里 `- 1` 表示排除截距项(intercept),因为在创建哑变量时,其中一个类别会被自动设定为参照(通常默认为第一类别)。结果是一个新的矩阵,其中每一列对应原始变量的一个独特水平,0/1表示该记录是否属于那个特定类别。
2. 使用`dplyr`包的`case_when()`函数:
```R
library(dplyr)
HW93_dummies_df <- HW93 %>%
mutate(category_dummy = case_when(
category == 'level1' ~ 1,
category == 'level2' ~ 1,
# ... 重复添加其他级别...
TRUE ~ 0
)) %>%
select(-category) # 删除原始分类变量
```
在这个例子中,我们逐个列出每个可能的类别,并赋予相应的数字(在这里是1),未列出的类别赋值为0。注意这会创建一个新的列`category_dummy`,而不是数据框的一部分。
阅读全文