0

我有一个样本,其中 50% 的观察结果是白人和 50% 的非裔美国人。

我想获得一个随机子样本,其中该比例被修改为 80% 白人和 20% 非洲裔美国人。

我尝试了分层命令,但找不到允许我将股份分配给分层标准的选项。

预先感谢您的帮助!

4

2 回答 2

0

如果您的原始数据集有 100 行(50 个白人和 50 个非洲裔美国人),那么 80% 将是 40 个样本,20% 将是 10 个样本。知道了这些值,你可以试试:stratified(mydf, "group", size = c("White" = 40, "African-American" = 10)).

例子:

mydf <- data.frame(group = rep(c("White", "African-American"), each = 50), value = 1:100)
mydf
library(splitstackshape)
set.seed(1)
x <- stratified(mydf, "group", size = c("White" = 40, "African-American" = 10))
summary(x)
 #              group        value      
 # African-American:10   Min.   : 1.00  
 # White           :40   1st Qu.:15.25  
 #                       Median :31.00  
 #                       Mean   :34.88  
 #                       3rd Qu.:47.50  
 #                       Max.   :93.00 
于 2017-12-06T11:20:24.997 回答
0

好吧,我会过滤白人和非裔美国人的数据,然后从每个子集中进行选择。

## 80% of the white sample
  smp_size <- floor(train_ratio * nrow(df_white))

  ## set the seed to make your partition reproductible
  set.seed(42)
  data_ind_w <- sample(seq_len(nrow(df_white)), size = smp_size)

对于非裔美国人

## 20% of the african sample
  smp_size <- floor(train_ratio * nrow(df_african))

  ## set the seed to make your partition reproductible
  set.seed(42)
  data_ind_a <- sample(seq_len(nrow(df_african)), size = smp_size)

那是新数据

  new_data <- c(white[data_ind_w,],african[data_ind_a,])
于 2017-12-04T12:44:37.323 回答