为列表的因子分配一个随机值 - 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)]
我有一个包含 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)]