今天早上,師兄給了我9個表,每個表以及內(nèi)容如下

image.png

image.png
- 師兄的需求如下
1. 要9個數(shù)據(jù)取交集
2. Description這一列,有簡單的方法把GN=這個數(shù)據(jù)提取為單獨(dú)的一列嗎
- 首先解決第一個問題:
多個數(shù)據(jù)取交集
#進(jìn)入9個文件的目錄下
#打開R
library("readxl")
filename=dir(pattern='LR_[0-9]{1}_[0-9]{1,2}_20221012.xlsx') #根據(jù)不同的文件名批量讀入文件名字
data=read_xlsx(filename[1]) #把第一個文件讀入到data數(shù)據(jù)集中(目的是為了merge合并的時候,第一個data數(shù)據(jù)集中存在數(shù)據(jù),使結(jié)果不為空)
data1=data[,c(3,4,11,15,18)] #提取指定列
for(k in 2:length(filename)){ #從第二個數(shù)據(jù)開始讀取,因為第一個我們已經(jīng)讀入到data中
tmp = read_xlsx(filename[k]) #依次讀入數(shù)據(jù),并暫存為tmp,相當(dāng)于每一個文件數(shù)據(jù)的中轉(zhuǎn)站
tmp1=tmp[,c(3,4,11,15,18)]
data1<-merge(data1,tmp1,by="Accession") #依次把中轉(zhuǎn)過來的數(shù)據(jù)與data1取交集并生成交集的data1數(shù)據(jù)集(Accession為每一個文件中相同的列名)
}
write.table(data1,file="allfile.txt",sep="\t",row.names = F)
- GN=這個數(shù)據(jù)提取為單獨(dú)的一列并加在文件后面
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