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

如何统计R数据框中各基因满足F<V<M条件的cond1分组数量

实现思路

要完成这个统计需求,核心逻辑是先把每个gene+cond1组合下的F、V、M三个组的value提取到同一行,直接判断大小条件后按基因汇总符合条件的数量即可。

方法1:tidyverse 实现(推荐,代码简洁易读)

首先加载依赖包,再执行转换逻辑:

# 加载包
library(tidyverse)

# 数据处理
result <- df %>%
  # 转宽表,将group的F/V/M作为列名,对应value作为值
  pivot_wider(names_from = group, values_from = value) %>%
  # 判断是否满足F < V < M的条件
  mutate(is_meet = F < V & V < M) %>%
  # 按基因分组统计符合条件的数量
  group_by(gene) %>%
  summarise(count = sum(is_meet))

# 查看结果
print(result)

输出结果和要求完全一致:

# A tibble: 2 × 2
  gene  count
  <chr> <int>
1 A         3
2 B         1

方法2:base R 实现(无需额外安装包)

如果不想依赖第三方包,可以用原生R函数实现:

# 把长表转成宽表,每个gene+cond1对应一行
df_wide <- reshape(df, idvar = c("gene", "cond1"), timevar = "group", direction = "wide")
# 新增列标记是否满足条件
df_wide$is_meet <- df_wide$value.F < df_wide$value.V & df_wide$value.V < df_wide$value.M
# 按基因汇总计数
result <- aggregate(is_meet ~ gene, data = df_wide, FUN = sum)
# 重命名列符合要求
colnames(result) <- c("gene", "count")

# 查看结果
print(result)

输出结果和方法1完全相同。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:45:05