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

R(dplyr包)-每组至少一行(随机抽样,每组10%行),r,dplyr,group-by,R,Dplyr,Group By,我试图从总共6173篇文章中进行随机抽样,这些文章分布在80种科学期刊上 如果所有期刊都包含在分析中,这将是一件有趣的事情,然而,每期期刊的文章数量差异很大,纯随机过程可能不会将它们全部包含在内。因此,有人建议,每期杂志包含10%的文章将是一个很好的选择 为了实现这一点,我使用了下面的代码。然而,由于非整数,由于输出低于0.5并四舍五入为零,因此每个文章都有一篇的期刊被忽略 为了尽可能少地使用文章来维护示例,我只想将上限函数应用于0到1之间的计数值,剩余值最好使用标准的舍入函数 这个问题可以通过

我试图从总共6173篇文章中进行随机抽样,这些文章分布在80种科学期刊上

如果所有期刊都包含在分析中,这将是一件有趣的事情,然而,每期期刊的文章数量差异很大,纯随机过程可能不会将它们全部包含在内。因此,有人建议,每期杂志包含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)
库(dplyr)
日记帐%dplyr::分组依据(日记帐)%>%dplyr::摘要(n=0.1*n())

示例您可以为日记账选择最大行数为1或0.1*的行

library(dplyr)
journal <- dataset %>% group_by(Journal) %>% sample_n(size = max(1, round(n() * 0.1)))
库(dplyr)
日记帐%group_by(日记帐)%>%sample_n(大小=最大值(1,圆形(n()*0.1)))

这是否回答了您的问题?你好,罗纳克!非常感谢您的关注和及时回复。建议的代码工作得很好,所有日志都被正确寻址。