Создание фиктивных переменных (n-1) категорий - PullRequest
0 голосов
/ 18 декабря 2018

Я нашел похожие записи, но не совсем то, что я хочу.Для двух категорированных переменных (например, пол (1,2)) мне нужно создать фиктивную переменную, где 0 - это мужчина, а 1 - женщина.

Вот как выглядят мои данные и что я сделал.

 data <- as.data.frame(as.matrix(c(1,2,2,1,2,1,1,2),8,1))
  V1
1  1
2  2
3  2
4  1
5  2
6  1
7  1
8  2 
library(dummies)
data <- cbind(data, dummy(data$V1, sep = "_"))
   > data
  V1 data_1 data_2
1  1      1      0
2  2      0      1
3  2      0      1
4  1      1      0
5  2      0      1
6  1      1      0
7  1      1      0
8  2      0      1

В этом коде вторая категория также (0,1).Кроме того, есть ли способ определить, какой определить базовую линию (присвоение 0 для любой категории)?

Я хочу, чтобы это выглядело так:

   > data
  V1     V1_dummy
1  1      0 
2  2      1 
3  2      1 
4  1      0 
5  2      1  
6  1      0  
7  1      0  
8  2      1 

Кроме того, я хочу расширитьэто три переменные категории, имеющие две категории после перекодирования (n-1).

Заранее спасибо!

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете использовать model.matrix следующим образом.Некоторые примеры данных с трехуровневым фактором :

set.seed(1)
(df <- data.frame(x = factor(rbinom(5, 2, 0.4))))
#   x
# 1 0
# 2 1
# 3 1
# 4 2
# 5 0

Затем

model.matrix(~ x, df)[, -1]
#   x1 x2
# 1  0  0
# 2  1  0
# 3  1  0
# 4  0  1
# 5  0  0

Если вы хотите указать, какая группа исчезает, нам нужно переставить уровни факторов,Это первая группа, которая исчезает.Так, например,

levels(df$x) <- c("1", "0", "2")
model.matrix(~x, df)[, -1]
#   x0 x2
# 1  0  0
# 2  1  0
# 3  1  0
# 4  0  1
# 5  0  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...