以下代码试图在插入符号包中使用dummyVars函数。 这是.rmd代码,并使用ggplot2软件包中提供的数据集,因此可以完全复制。
```{r}
#rm(list = ls())
```
```{r}
library(ggplot2)
```
```{r}
data("diamonds")
```
```{r}
data <- diamonds
summary(data)
str(data)
```
```{r}
library(caret)
```
```{r}
dmy <- dummyVars(formula = ~ cut + color + clarity,
data = data,
fullRank = FALSE)
b.vars <- data.frame(predict(dmy, newdata = data))
head(b.vars, n = 10)
```
b.vars应该是虚拟变量(0s和1s)的数据帧,但它返回的是double值,例如0.6324555。 而且b.vars中的列名不正确 例如,有“ cut.L”而不是“ cut.fair”
这与我过去使用的过程相同,但我不明白自己在做什么错。有人可以指出我的错误。 谢谢!
答案 0 :(得分:0)
library(ggplot2)
library(caret)
data("diamonds")
data <- diamonds
data
summary(data)
str(data)
data$cut <- as.factor(as.character(data$cut))
data$clarity <- as.factor(as.character(data$clarity))
data$color <- as.factor(as.character(data$color))
sapply(data, class)
dmy <- dummyVars(formula = ~ cut + color + clarity,
data = data,
fullRank = TRUE)
b.vars <- data.frame(predict(dmy, newdata = data))
head(b.vars, n = 10)
cut.Good cut.Ideal cut.Premium cut.Very.Good color.E color.F color.G color.H color.I color.J clarity.IF clarity.SI1 clarity.SI2 clarity.VS1 clarity.VS2 clarity.VVS1
1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0
2 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0
3 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
4 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0
5 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0
6 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0
7 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1
8 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0
9 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0
10 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0
clarity.VVS2
1 0
2 0
3 0
4 0
5 0
6 1
7 0
8 0
9 0
10 0
摆脱变量的“有序”类。为此,您可以先将变量转换为字符,然后立即转换为因数。