【问题标题】:Matrix representation of categories in R [duplicate]R中类别的矩阵表示[重复]
【发布时间】:2015-03-17 22:14:21
【问题描述】:

我有一列包含一组类别,例如Category1、Category2、Category3、Category2 等 有没有办法在 R 中将它们表示为具有以下视图的矩阵:

Category1 Category2 Category3
        1         0         0
        0         1         0
        0         0         1
        0         1         0
        ...       ...       ...

非常感谢任何反馈。

【问题讨论】:

  • 在这种情况下,我认为model.matrix(~ x -1) 或diag(nlevels(factor(x)))[factor(x),] 是最好的。

标签: r data-representation


【解决方案1】:

我会做以下事情:

matrixForm <- function(X) {
   values <- sort(unique(X))
   outM <- matrix(0, nrow=length(X), ncol=length(values))
   for (i in 1:ncol(outM)) outM[,i] <- as.numeric(X==values[i])
   colnames(outM) <- values
   return(outM)
}

X 是字符的输入向量。所以结果……

X <- c('Category1','Category2','Category2','Category3','Category1','Category3')
matrixForm(X)
#################
     Category1 Category2 Category3
[1,]         1         0         0
[2,]         0         1         0
[3,]         0         1         0
[4,]         0         0         1
[5,]         1         0         0
[6,]         0         0         1

【讨论】:

  • @IvanT - 我先看看重复的问题。 R 中有用于此操作的内置方法,不需要循环和预分配。
猜你喜欢
  • 2019-07-19
  • 2019-12-27
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多