gpt4 book ai didi

r - 在R中将因子矩阵转换为二进制(指标)矩阵的最有效方法

转载 作者:行者123 更新时间:2023-12-04 10:11:01 30 4
gpt4 key购买 nike

我能想到几种方法来转这种类型的矩阵(数据框):

    dat = data.frame(
x1 = rep(c('a', 'b'), 100),
x2 = rep(c('x', 'y'), 100)
)

head(dat)
x1 x2
1 a x
2 b y
3 a x
4 b y
5 a x
6 b y

变成这样的二进制(指标)矩阵(或数据框):

a  b  x  y
1 0 1 0
0 1 0 1
...

(当然,这个结构很简单,仅用于说明目的!)

非常感谢!

最佳答案

我们可以使用table

tbl <- table(rep(1:nrow(dat),2),unlist(dat))
head(tbl, 2)
# a b x y
# 1 1 0 1 0
# 2 0 1 0 1

或者一个可能有效的选择是

library(Matrix)
sM <- sparse.model.matrix(~ -1 + x1 +x2, dat,
contrasts.arg = lapply(dat, contrasts, contrasts = FALSE))
colnames(sM) <- sub(".*\\d", "", colnames(sM))
head(sM, 2)
# 2 x 4 sparse Matrix of class "dgCMatrix"
# a b x y
#1 1 . 1 .
#2 . 1 . 1

转成matrix

可以转成二进制
head(as.matrix(sM),2)  
# a b x y
#1 1 0 1 0
#2 0 1 0 1

关于r - 在R中将因子矩阵转换为二进制(指标)矩阵的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36531594/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com