我有一个分类变量和一个虚拟变量。
categorical <- sample(letters[1:4], 10, replace=TRUE)
dummy <- sample(c(0,1), 10, replace=TRUE)
y <- rnorm(10)
Data <- data.frame(cbind(y, dummy, categorical))
Data$categorical <- factor(Data$categorical, labels=c("A", "B", "C", "D"))
y dummy categorical
1 1.2489535 1 A
2 1.0294912 1 C
3 -0.6506571 1 D
4 1.7365180 0 B
5 -1.6664038 1 B
6 -0.3499880 1 A
7 1.1315883 0 B
8 -0.8568375 0 D
9 -0.5332537 0 C
10 -1.8431102 0 B
11 1.2489535 1 B
12 1.0294912 1 A
13 -0.6506571 1 D
14 1.7365180 0 D
15 -1.6664038 1 A
16 -0.3499880 1 A
17 1.1315883 0 B
18 -0.8568375 0 D
19 -0.5332537 0 A
20 -1.8431102 0 D
在这两者之间创建交互变量非常容易,
model.matrix(y ~ categorical:dummy, data = Data)
(Intercept) categoricalA:dummy categoricalB:dummy categoricalC:dummy categoricalD:dummy
1 1 1 0 0 0
2 1 0 0 1 0
3 1 0 0 0 1
4 1 0 0 0 0
5 1 0 1 0 0
6 1 1 0 0 0
7 1 0 0 0 0
8 1 0 0 0 0
9 1 0 0 0 0
10 1 0 0 0 0
11 1 0 1 0 0
12 1 1 0 0 0
13 1 0 0 0 1
14 1 0 0 0 0
15 1 1 0 0 0
16 1 1 0 0 0
17 1 0 0 0 0
18 1 0 0 0 0
19 1 0 0 0 0
20 1 0 0 0 0
但是如果我只想在该类别的四个级别中的三个级别进行交互呢?我宁愿避免手工做这件事......
答案 0 :(得分:-1)
你看过dummies
包吗?
但如果不是这样的话可能有用:
model.matrix(y ~ categorical:dummy, data = Data[ ! Data$categorical %in% 'D', ] )