表达矩阵处理0值-R语言去除含特定数目0值的行

我们在处理转录组或蛋白质组数据的时候,经常会遇到处理0值的问题,但是有的时候我们并不想处理全部的0值,而是有所保留,比如15个样本去除含80%以上0值的行(也就是去除含超过12个0的行)

比如这样,一行里只有几个数据,其他都是0,肯定是不能用的:

我们简单一点,直接上代码

#读取矩阵,row.names = 1使得第一列作为索引,一般是基因名
protein <- read.csv("C:/Users/Huzhuocheng/Desktop/CDS_count1.csv", row.names = 1, check.names = FALSE)
# 计算每行中0的数量
row_sums <- rowSums(protein == 0)
# 创建一个新的数据框,只包括那些不超过3个0的行
#14647-13903=744
filtered_data <- protein[row_sums <= 3, ]
# 将结果写入新的CSV文件,row.names = T使得基因名列被输出
write.csv(filtered_data, "C:/Users/Huzhuocheng/Desktop/filtered_data.csv", row.names = T)

这样我原本的14647个基因,筛选后剩下13903个,这13903个基因每行不超过3个0

当然,在转录组或蛋白质组中出现0,我认为有几个原因:

(1)收样问题,可能会出现几重复中,如4重复里,有两个有,另外两个是0

(2)未表达:如一个组的几个重复里都是0,那一般是这个基因未表达

(3)拼接问题:也可能会有转录本没对上,不过出现这样的问题,0的异常是很明显的

还有其他问题欢迎一起交流

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值