Я бы преобразовал фактор в символьный объект и после этого проверил бы, присутствует ли в строке степень от 1 до 5.
Предполагая, что это ваши данные
FirstDegree <- factor(c("[1, 4, 5]", "[1,5]", "[1]", "[2, 4]", "[2]", "[3, 5]"))
FirstDegree
Levels: [1, 4, 5] [1,5] [1] [2, 4] [2] [3, 5]
Я бы сделал
FirstDegree <- as.character(FirstDegree)
# sapply runs the code below for every possible degree 1 to 5
m <- sapply(1:5, function(degreenumber){
# we convert the number 1 to 5 to a character and see if this number
# is present in the vector FirstDegree. grepl returns TRUE or FALSE but since
# you asked for 1 or 0 we use as.numeric
as.numeric(grepl(as.character(degreenumber), FirstDegree))})
# the resulting matrix looks like this:
m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 0 1 1
[2,] 1 0 0 0 1
[3,] 1 0 0 0 0
[4,] 0 1 0 1 0
[5,] 0 1 0 0 0
[6,] 0 0 1 0 1