【问题标题】:Taking a disproportionate sample from a dataset in R从 R 中的数据集中抽取不成比例的样本
【发布时间】:2012-05-01 17:31:02
【问题描述】:

如果我在 R 中有一个大型数据集,我如何在考虑原始数据分布的情况下随机抽取数据样本,特别是如果数据是倾斜的并且只有 1% 属于次要类并且我想对数据进行有偏差的抽样?

【问题讨论】:

标签: r random sampling


【解决方案1】:

sample(x, n, replace = FALSE, prob = NULL) 函数从大小为 n 的向量 x 中获取样本。该样本可以无替换,并且选择每个元素到样本的概率可以是每个元素都相同,或者一个向量由用户通知。

如果你想对每个元素的相同概率进行 50 个案例的抽样,你所要做的就是

n <- 50
smpl <- df[sample(nrow(df), 50),]

但是,如果你想为元素给出不同的被选中概率,比如 sexM 的元素的概率为 0.25,而那些sexF的人概率0.75,你应该这样做

n <- 50
prb <- ifelse(sex=="M",0.25,0.75)
smpl <- df[sample(nrow(df), 50, prob = prb),]

【讨论】:

  • 除非我在这里遗漏了一些明显的东西,否则我会从尝试运行最后一个示例中得到 Error in ifelse(sex == "M", 0.25, 0.75) : object 'sex' not found
  • 不过,我只是让它在 sample 函数中与 prob=ifelse(df$sex == "M", 0.25, 0.75) 一起工作。
猜你喜欢
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
相关资源
最近更新 更多