为列表的因子分配一个随机值 - 0 或 1

Assign a random value - either 0 or 1 - to factors of a list

我有一个包含 1000 个因素的列表,每个因素的范围从 1 到 1000,每个因素出现 15 次。我想为每个具有相同值的因素分配 0 或 1。例如,出现 15 次的因子 1 必须始终具有值 0。知道如何执行此操作吗?基本上,我想要两列,一列包含因素,另一列包含每个因素的值(0 或 1)。

你可以这样做:

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)]