R语言如何删除log2fc为0的行且保留case为C7的行
实现条件筛选的方法
方法1:Base R 实现
- 如果你还没有将0转换为NA,可以直接用逻辑条件筛选,一步完成需求:
# 保留规则:case为c7 或 log2fc不等于0的行 filtered_df <- df[df$case == "c7" | df$log2fc != 0, ]
注:如果你的case列中目标病例存储为大写C7,请将条件里的字符串对应修改为"C7"
- 如果你已经执行了
df[df == 0] <- NA将0转为了NA,可以用以下筛选逻辑:
filtered_df <- df[df$case == "c7" | !is.na(df$log2fc), ]
方法2:dplyr 语法实现(更易读)
library(dplyr) # 原始数据直接筛选 filtered_df <- df %>% filter(case == "c7" | log2fc != 0) # 若已将0转为NA,替换筛选条件即可 filtered_df <- df %>% filter(case == "c7" | !is.na(log2fc))
箱线图绘制示例(基于ggplot2)
你可以新增分组列区分C7和其他样本,再完成可视化:
library(ggplot2) filtered_df <- filtered_df %>% mutate(sample_group = ifelse(case == "c7", "C7病例", "其余样本")) ggplot(filtered_df, aes(x = sample_group, y = log2fc, fill = sample_group)) + geom_boxplot() + # 如果需要按基因symbol分开展示,可取消下一行注释 # facet_wrap(~symbol) + labs(x = "样本分组", y = "log2(表达倍数变化)") + theme_minimal()
内容的提问来源于stack exchange,提问作者biobudhan
相关产品推荐
相关产品推荐

