今天早上,师兄给了我9个表,每个表以及内容如下
- 师兄的需求如下
1. 要9个数据取交集
2. Description这一列,有简单的方法把GN=这个数据提取为单独的一列吗
- 首先解决第一个问题:
多个数据取交集
#进入9个文件的目录下
#打开R
library("readxl")
filename=dir(pattern='LR_[0-9]{1}_[0-9]{1,2}_20221012.xlsx') #根据不同的文件名批量读入文件名字
data=read_xlsx(filename[1]) #把第一个文件读入到data数据集中(目的是为了merge合并的时候,第一个data数据集中存在数据,使结果不为空)
data1=data[,c(3,4,11,15,18)] #提取指定列
for(k in 2:length(filename)){ #从第二个数据开始读取,因为第一个我们已经读入到data中
tmp = read_xlsx(filename[k]) #依次读入数据,并暂存为tmp,相当于每一个文件数据的中转站
tmp1=tmp[,c(3,4,11,15,18)]
data1<-merge(data1,tmp1,by="Accession") #依次把中转过来的数据与data1取交集并生成交集的data1数据集(Accession为每一个文件中相同的列名)
}
write.table(data1,file="allfile.txt",sep="\t",row.names = F)
- GN=这个数据提取为单独的一列并加在文件后面
cat allfile.txt|cut -f1-5,7-9,11-13,15-17,19-21,23-25,27,29,31,33,35- |grep -E -o "Description|GN=[A-Za-z0-9]{0,9}" >gene.tmp
paste allfile.txt gene.tmp >file9.txt
rm -f *.tmp allfile.txt