我们在处理转录组或蛋白质组数据的时候,经常会遇到处理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的异常是很明显的
还有其他问题欢迎一起交流