R 语言 将因子转化为虚拟变量

1. 背景

在回归分析时,有时候我们需要知道每个因子每个水平的回归系数,这样就需要将因子转化为虚拟变量,R语言中有model.matrix进行转换,但是只能一个转换一个因子,这里我们用R包useful,可以支持多个因子同时转换。

2. 示例数据

Herd <- c(1,1,2,2,2,3,3,3,3)
Year = c(rep(c(2018,2019),each=4),2020)
Sire <- c("ZA","AD","BB","AD","AD","CC","CC","AD","AD")
Yield <- c(110,100,110,100,100,110,110,100,100)
dat <- data.frame(Herd,Year,Sire,Yield)
dat$Herd <- as.factor(dat$Herd)
dat$Year <- as.factor(dat$Year)
dat


这里,Herd,Year,Sire都是因子,如果在构建矩阵时,需要转化为虚拟变量。

3. R中model.matrix转化方法

一个因子,一个因子的转化,然后进行合并:

X1 = model.matrix(~Herd-1,data=dat)
X1

X2 = model.matrix(~Year-1,data=dat)
X2

X = cbind(X1,X2)
X

4. 更简单的方法

# 简单的方法
# install.packages("useful") # 如果没有安装useful这个包,运行这行命令进行安装。
library(useful)
build.x(~Herd+Year-1,data=dat,contrasts = F)

5. 全部代码

# 示例数据
Herd <- c(1,1,2,2,2,3,3,3,3)
Year = c(rep(c(2018,2019),each=4),2020)
Sire <- c("ZA","AD","BB","AD","AD","CC","CC","AD","AD")
Yield <- c(110,100,110,100,100,110,110,100,100)
dat <- data.frame(Herd,Year,Sire,Yield)
dat$Herd <- as.factor(dat$Herd)
dat$Year <- as.factor(dat$Year)
dat


# R中model.matrix
X1 = model.matrix(~Herd-1,data=dat)
X1

X2 = model.matrix(~Year-1,data=dat)
X2

X = cbind(X1,X2)
X


# 简单的方法
library(useful)
build.x(~Herd+Year-1,data=dat,contrasts = F)

6. 怎么样,学会了么

快来关注我吧!
公众号:育种数据分析之放飞自我

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章