如何在R中取样以使原始比例保持不变

时间:2017-07-06 07:27:08

标签: r database analytics sampling

我想从数据中获取样本,使得变量的原始比例保持不变。例如,如果在我的原始数据中,有1000个值,其中有100个a值,800个b值和100个c值。如果我从这个原始数据中取出100个值的样本,它应该有10个a值,80个b值和10个c值。请帮忙!

1 个答案:

答案 0 :(得分:0)

tidyverse包具有一些很好的功能,可以帮助解决这个问题。

library(tidyverse)

data <- tibble(Group = c(rep("a", 100), rep ("b", 800), rep("c", 100)),
               Value = runif(1000))

sampledData <- data %>% 
  group_by(Group) %>%
  sample_frac(0.1)

我们创建了一个非常简单的数据集示例,其中包含随机统一值和3个组,其中100个来自a,800个来自b,100个来自c

使用函数group_by,我们将该组变量的数据分组,这样当我们使用函数sample_frac时,该函数将分别对所有组执行。

我们可以使用table

进行检查
> table(sampledData$Group)

 a  b  c 
10 80 10 

注意

此答案使用tidyverse管道运算符%>%,这相当于:

sampledData <- sample_frac(group_by(data, Group), 0.1)