Присвойте случайное значение - либо 0, либо 1 - факторам списка - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть список с 1000 факторами, каждый в диапазоне от 1 до 1000, и каждый фактор появляется 15 раз. Я хочу назначить 0 или 1 каждому фактору, имеющему одинаковое значение. Например, фактор 1, который появляется 15 раз, должен всегда иметь значение 0. Есть идеи, как это сделать? По сути, я хотел бы иметь два столбца, один с коэффициентами, а другой со значением (0 или 1), которое имеет каждый фактор.

1 Ответ

1 голос
/ 04 февраля 2020

Вы можете сделать:

my_binary <- as.numeric(my_factor) %% 2

Так, например:

df <- data.frame(number = 1:20, factor = rep(letters[1:5], 4))
df$binary <- as.numeric(df$factor) %% 2

Дает вам

df
#>    number factor binary
#> 1       1      a      1
#> 2       2      b      0
#> 3       3      c      1
#> 4       4      d      0
#> 5       5      e      1
#> 6       6      a      1
#> 7       7      b      0
#> 8       8      c      1
#> 9       9      d      0
#> 10     10      e      1
#> 11     11      a      1
#> 12     12      b      0
#> 13     13      c      1
#> 14     14      d      0
#> 15     15      e      1
#> 16     16      a      1
#> 17     17      b      0
#> 18     18      c      1
#> 19     19      d      0
#> 20     20      e      1


И если вам нужны произвольные числа с определенной вероятностью вы бы сделали:

numbers <- c(0, 1)
probs <- c(0.75, 0.25)
df <- data.frame(number = 1:20, factor = rep(letters[1:5], 4))
df$binary <- sample(numbers, length(levels(df$factor)), prob = probs, T)[as.numeric(df$factor)]
...