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

求助:基于Gene-Group分组条件生成R语言DataFrame新列

解决方案

你可以通过**分组后在mutate()中结合case_when()**实现需求,核心是在组内统计符合Counts≥10的行数,以此作为判断条件:

library(dplyr)

# 处理40万行数据的代码
df_processed <- df %>%
  # 按Gene和Group分组
  group_by(Gene, Group) %>%
  # 生成CountsRatio列
  mutate(CountsRatio = case_when(
    # 组内Counts≥10的行数≥2时,计算比值
    sum(Counts >= 10, na.rm = TRUE) >= 2 ~ NascentCountsCPM / TotalCountsCPM,
    # 不满足条件时返回NA
    TRUE ~ NA_real_
  )) %>%
  # 取消分组(避免后续操作受分组状态影响)
  ungroup()

关键细节说明

  • sum(Counts >= 10, na.rm = TRUE):逻辑值TRUE会被转为1,FALSE转为0,sum的结果就是组内符合Counts≥10的行数;na.rm=TRUE是为了排除Counts为NA的行,避免干扰统计结果。
  • NA_real_:指定返回数值型NA,确保新列和计算结果的类型一致,避免类型冲突。
  • 40万行数据用dplyr分组处理效率足够,无需额外优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:45:39