【问题标题】:create desired tibble without using loop在不使用循环的情况下创建所需的小标题
【发布时间】:2020-11-26 21:03:07
【问题描述】:

我在数据中有 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)

【问题讨论】:

    标签: r dplyr tidyverse tibble


    【解决方案1】:

    我们可以使用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)
    

    【讨论】:

    【解决方案2】:

    您可以使用以下内容:

    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
    

    【讨论】:

      猜你喜欢
      • 2016-04-20
      • 2020-08-07
      • 2010-10-26
      • 1970-01-01
      • 2014-03-08
      • 2023-02-05
      • 2019-01-27
      • 1970-01-01
      • 2014-04-13
      相关资源
      最近更新 更多