linux文本操作多个vcf计算变异位点频率单细胞

如何从多个文件中取交集?

2021-09-05  本文已影响0人  宗肃書

比如我有很多个文件(100或者1000个以上),每一个文件都包含两列信息,一列是染色体的位置信息,一列是它对应的值,但是这些文件的行数不完全一样。如果我想快速的找到所有文件的交集需要怎么办?

用awk命令或者单纯的写一个脚本可能稍微有点复杂,下面我列出我的解决办法。

实操!

filename=dir(pattern='[A-Z]{2,3}[0-9]{2}.depth')    #根据不同的文件名批量读入文件名字
data<-read.table(file="BC01.depth",header=T)    #把第一个文件读入到data数据集中(目的是为了merge合并的时候,第一个data数据集中存在数据,使结果不为空)
for(k in 2:length(filename)){     #从第二个数据开始读取,因为第一个我们已经读入到data中
    tmp = read.table(file =filename[k], header = T,stringsAsFactors = F)    #依次读入数据,并暂存为tmp,相当于每一个文件数据的中转站
   data<-merge(data,tmp,by="position")   #依次把中转过来的数据与data取交集并生成交集的data数据集(position为每一个文件中相同的列名)
}
write.table(data,file="allfile.depth",sep="\t")
filename=dir(pattern='[A-Z]{2,3}[0-9]{2}.depth') 
data<-read.table(file=filename[1],header=T) 
for(k in 2:length(filename)){   
    tmp = read.table(file =filename[k], header = T,stringsAsFactors = F)   
   data<-merge(data,tmp,by="position",all=T)  
}
write.table(data,file="allfilebing.depth",sep="\t")

那什么时候会用到上述的操作呢?

上一篇下一篇

猜你喜欢

热点阅读