Как я могу создать фиктивные переменные из числовой переменной в R? - PullRequest
0 голосов
/ 14 декабря 2018

Как я могу создать фиктивные переменные из числовой переменной в 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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Мы могли бы сделать это vectorize d способом, создав индекс row/column и присвоив уже созданным matrix из 1 с 0 значение на основе индекса

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

data

x <- c(5,2,4,1,9)
N <- 6
0 голосов
/ 14 декабря 2018

Вот вам хакерское решение

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...