选择因子水平内的随机样本,每个因子水平的层数不等

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择因子水平内的随机样本,每个因子水平的层数不等相关的知识,希望对你有一定的参考价值。

我想在一个因子的级别内选择我的数据帧的随机样本。我可以使用ddply在因子级别内获取样本:

library(dplyr)
newdf <- ddply(iris, ~Species, function(x){
  ndf <- x[sample(nrow(x),2), ]
})
with(newdf,table(Species))

但是,我不想简单地从每个因子水平中抽取2个观测值。相反,我想从物种的3个等级(即2个来自setosa,3个来自变色,4个frm virginica)中进行2,3和4次观察。我怎样才能做到这一点?

我可以创建一个值向量,例如c(2,3,4)循环,每个数据帧由ddply分割?

需要指定该向量中的值 - 它们不是所有数据的一致比例,也不是一致的数字。

答案

我们split数据集由'物种',使用Mapsample观察的数量,和rbind list输出。

 do.call(rbind, Map(function(x,y) x[sample(y),], split(iris, iris$Species), 2:4))

以上是关于选择因子水平内的随机样本,每个因子水平的层数不等的主要内容,如果未能解决你的问题,请参考以下文章

predict.lm() 在测试数据中具有未知因子水平

分类 - 因子水平的使用

R语言数据预处理:将指定的分类变量转化为因子变量通过levels参数指定因子水平通过labels参数指定因子标签

ggplot2:从图中删除未使用的因子水平组合的方面(facet_grid)

R中的鬼因子水平[重复]

将 NA 转换为因子水平