You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按Gene.Prop分组对DataFrame抽样:10%比例且最少5条

分组抽样添加最低条数限制的解决方案

你需要的是每组按比例抽样同时保证最低抽取条数,直接用sample_frac()没法实现这个逻辑,得换用group_modify()对每个分组单独计算抽样数量,再执行抽样。

修改后的代码

my_dataframe_1_percent <- domain_annotated_DDR_list_DE %>%
  filter(domain_or_af == "FALSE") %>%
  distinct(sgRNA.sequence, .keep_all = TRUE) %>%
  group_by(Gene.Prop) %>%
  group_modify(~ {
    # 计算抽样数:取组内条目数的10%和5的较大值,同时不超过组内总条数
    sample_size <- max(round(nrow(.x) * 0.1), 5)
    sample_size <- min(sample_size, nrow(.x))
    .x %>% sample_n(sample_size)
  }) %>%
  tally() %>%
  ungroup()

关键逻辑说明

  • 用group_modify()遍历每个分组,能针对每组的实际条目数动态计算抽样量
  • max(round(nrow(.x)*0.1),5)确保满足两个条件:要么抽10%,要么至少抽5条,取两者里的大数
  • 额外加min(sample_size, nrow(.x))是为了避免分组条目数不足5的情况(比如某组只有3条,就直接抽取全部3条)
  • 如果你实际要抽的是1%而非描述里的10%,把代码里的0.1改成0.01就行

内容的提问来源于stack exchange,提问作者Raghav Thakar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:20:28