如果我在R中有一个大型数据集,我如何考虑原始数据的分布随机抽取数据,特别是如果数据偏斜且只有1%属于次要类而且我想要拿一个有偏见的数据样本?
答案 0 :(得分:20)
sample(x, n, replace = FALSE, prob = NULL)
函数从大小为x
的向量n
中提取样本。此样本可以带或无替换,选择每个元素到样本的概率可以每个元素相同,或者用户通知向量。
如果你想为50个案例的每个元素采集相同概率的样本,你所要做的就是
n <- 50
smpl <- df[sample(nrow(df), 50),]
但是,如果你想为元素选择不同的概率,那么,性 M 的元素有概率 0.25 ,而那些性 F 的人有 0.75 ,你应该做
n <- 50
prb <- ifelse(sex=="M",0.25,0.75)
smpl <- df[sample(nrow(df), 50, prob = prb),]