R(dplyr包)-每组至少一行(随机抽样,每组10%行)

  • 本文关键字:随机 一行 每组 dplyr r dplyr group-by
  • 更新时间 :
  • 英文 :


我试图从分布在80种科学期刊上的6173篇文章中进行随机抽样。

如果所有期刊都包含在分析中,那将是一件有趣的事情,然而,每个期刊的文章数量差异很大,纯粹的随机过程可能不会将它们全部包括在内。因此,有人建议每个期刊包含10%的文章将是一个很好的选择。

为了实现这一点,我使用了下面的代码。然而,由于非整数,每篇文章一篇的期刊被忽略,因为产出低于0.5并四舍五入为零。

为了用尽可能少的文章来保持样本,我想只将天花板函数应用于0和1之间的计数值,其余的值最好使用标准的圆形函数。

这个问题可以通过手动搜索缺席的文章和相应的期刊来部分解决,但这对任何学习技能都没有帮助,也不是一个好的解决方案。

考虑到所使用的代码,我真的很感激任何建议,尽管如果这个问题看起来太微不足道,我很抱歉。

library(dplyr)
journal <- dataset %>% dplyr::group_by(Journal) %>% dplyr::summarise(n = 0.1 * n())
sample <- function(journal, frac)
{
if(journal < 1)
{sample_n(journal, ceiling({{frac}} * n()) )}
else 
{sample_n(journal, round({{frac}} * n()) )}
}
dataset_randomised <- dataset %>% sample(0.1)
print(dataset_randomised)

您可以为日记账选择最多1行或0.1*行的行。

library(dplyr)
journal <- dataset %>% group_by(Journal) %>% sample_n(size = max(1, round(n() * 0.1)))

最新更新