求助:基于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
相关产品推荐
相关产品推荐

