在不使用循环的情况下创建所需的 tibble
create desired tibble without using loop
我在一个数据中有n个分段(0到n-1)。我知道每个细分市场中男性的百分比。
如何在不使用循环的情况下编写动态代码来创建分段和男性数组?
例如-
# datasize = 20, # segmentations = 2
N = 20
percent_each_segmentation = c(0.4, 0.6)
percent_male_per_segmentation = c(0.5, 0.25)
所需的输出看起来像
segmentation <- c(rep(0, 8), rep(1, 12))
# segmentation 0 - 0.4*20, segmentation 1 - 0.6*20
male <- c(rep(1, 4), rep(0, 4), rep(1, 3), rep(0, 9))
# male in segmentation 0 : 0.5*0.4*20, segmentation 1 : 0.25*0.6*20
tbl <- tibble(segmentation, male)
我们可以将 rep
用作
N <- 20
r1 <- percent_each_segmentation *
percent_male_per_segmentation * N
bnry <- c(1, 0)
r2 <- rep(r1, each = length(bnry))
r2[length(r2)] <- N - sum(head(r2, -1))
rep(rep(bnry, length.out = length(r2)), r2)
为了分割
rep(c(0, 1), N * percent_each_segmentation)
您可以使用以下内容:
N = 20
perc_seg = c(0.4, 0.6)
perc_male = c(0.5, 0.25)
n <- N * perc_seg
n_male <- N * perc_seg * perc_male
n_female <- n - n_male
data.frame(segmentation = rep(seq_along(perc_seg) - 1, n),
male = rep(rep(c(1, 0), length(perc_seg)),c(rbind(n_male, n_female))))
# segmentation male
#1 0 1
#2 0 1
#3 0 1
#4 0 1
#5 0 0
#6 0 0
#7 0 0
#8 0 0
#9 1 1
#10 1 1
#11 1 1
#12 1 0
#13 1 0
#14 1 0
#15 1 0
#16 1 0
#17 1 0
#18 1 0
#19 1 0
#20 1 0
我在一个数据中有n个分段(0到n-1)。我知道每个细分市场中男性的百分比。
如何在不使用循环的情况下编写动态代码来创建分段和男性数组?
例如-
# datasize = 20, # segmentations = 2
N = 20
percent_each_segmentation = c(0.4, 0.6)
percent_male_per_segmentation = c(0.5, 0.25)
所需的输出看起来像
segmentation <- c(rep(0, 8), rep(1, 12))
# segmentation 0 - 0.4*20, segmentation 1 - 0.6*20
male <- c(rep(1, 4), rep(0, 4), rep(1, 3), rep(0, 9))
# male in segmentation 0 : 0.5*0.4*20, segmentation 1 : 0.25*0.6*20
tbl <- tibble(segmentation, male)
我们可以将 rep
用作
N <- 20
r1 <- percent_each_segmentation *
percent_male_per_segmentation * N
bnry <- c(1, 0)
r2 <- rep(r1, each = length(bnry))
r2[length(r2)] <- N - sum(head(r2, -1))
rep(rep(bnry, length.out = length(r2)), r2)
为了分割
rep(c(0, 1), N * percent_each_segmentation)
您可以使用以下内容:
N = 20
perc_seg = c(0.4, 0.6)
perc_male = c(0.5, 0.25)
n <- N * perc_seg
n_male <- N * perc_seg * perc_male
n_female <- n - n_male
data.frame(segmentation = rep(seq_along(perc_seg) - 1, n),
male = rep(rep(c(1, 0), length(perc_seg)),c(rbind(n_male, n_female))))
# segmentation male
#1 0 1
#2 0 1
#3 0 1
#4 0 1
#5 0 0
#6 0 0
#7 0 0
#8 0 0
#9 1 1
#10 1 1
#11 1 1
#12 1 0
#13 1 0
#14 1 0
#15 1 0
#16 1 0
#17 1 0
#18 1 0
#19 1 0
#20 1 0