2015-03-17 1 views
0

У меня есть столбец с набором категорий, например. Категория1, Категория2, Category3, Категория2 и т.д. Есть ли способ, чтобы представить их в R в качестве матрицы со следующей точки зрения:Матричное представление категорий в R

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

Любая обратная связь очень ценится.

+1

В этом случае, либо 'model.matrix (~ х -1)' или 'DIAG (NLEVELS (коэффициент (х))) [множитель (х),]' будет лучшее, что я считаю. – thelatemail

ответ

0

Я хотел бы сделать следующее:

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 
+0

Благодарим вас за помощь! –

+1

@IvanT - Сначала я рассмотрю дублирующий вопрос. Существуют встроенные методы в R для этой операции, которые не требуют цикла и предварительной привязки. – thelatemail