Как я могу создать фиктивные переменные из числовой переменной в R?Я хочу создать N фиктивных переменных.Таким образом, числовая переменная означает, сколько нулей придет, считая от первого столбца.Представьте себе N = 6.Вот так:
x a 5 b 2 c 4 d 1 e 9
Должно стать:
1 2 3 4 5 6 a 0 0 0 0 0 1 b 0 0 1 1 1 1 c 0 0 0 0 1 1 d 0 1 1 1 1 1 e 0 0 0 0 0 0
Спасибо!
Мы могли бы сделать это vectorize d способом, создав индекс row/column и присвоив уже созданным matrix из 1 с 0 значение на основе индекса
vectorize
row/column
matrix
m1 <- matrix(1, ncol = N, nrow = length(x), dimnames = list(letters[seq_along(x)], seq_len(N))) x1 <- pmin(x, ncol(m1)) m1[cbind(rep(seq_len(nrow(m1)), x1), sequence(x1))] <- 0 m1 # 1 2 3 4 5 6 #a 0 0 0 0 0 1 #b 0 0 1 1 1 1 #c 0 0 0 0 1 1 #d 0 1 1 1 1 1 #e 0 0 0 0 0 0
x <- c(5,2,4,1,9) N <- 6
Вот вам хакерское решение
x = c(5,2,4,1,9) N = 6 out = matrix(1, length(x), N) for (i in 1:length(x)) out[i,1:min(x[i], N)] = 0 > out [,1] [,2] [,3] [,4] [,5] [,6] [1,] 0 0 0 0 0 1 [2,] 0 0 1 1 1 1 [3,] 0 0 0 0 1 1 [4,] 0 1 1 1 1 1 [5,] 0 0 0 0 0 0