①
setwd('C:\\Users\\86187\\Desktop\\ASSET-master\\GORD')
library(data.table)
library(dplyr)
#第一步获取要合并的文件名
lf <-list.files(pattern = ".txt$") #以report.tsv 结尾的
files <- gsub("\\.txt", "", lf) #切掉后缀.tsv,获得这些名称,为循环准备
files[1]
for (a in seq_along(files)){
micepath = './../'#指定目录
dir = list.files(micepath,pattern = lf[a],recursive = TRUE,full.names = TRUE)#获取该目录下有多个以该文件名命名的文件;recursive = TRUE可以获取该目录下所有子文件夹中的文件
n = length(dir)
merge.data = read.table(dir[1],header = T,sep = '\t') #先读取第一个文件
for (i in 2:n){
new.data = read.table(file = dir[i], header=T, sep="\t")#从第二个开始读取
merge.data = merge(merge.data,new.data,by='SNP',all = T)#以SNP列合并
merge.data = na.omit(merge.data)#去除含NA的行
merge.data = select(merge.data,c('SNP','CHR.x','BP.x','Z.x','Z.y'))#选择需要的列
colnames(merge.data) = c('RSID','CHR','POS','Z.GORD','Z.MDD')#重命名列
}
write.table(merge.data,file = lf[a],row.names = F,sep = '\t',quote = F)#保存文件
}
② 批量处理一个文件夹中所有的文件
setwd('C:\\Users\\86187\\Desktop\\MDD_gastrointestinal tract disorders\\Cross-trait meta-analysis and pleiotropic loci\\sojo\\IBD')
library(data.table)
IBD = fread('./../../GORD_MDD/5_IBD.txt',header = T,sep = '\t')
lf <-list.files(pattern = ".txt$") #以report.tsv 结尾的
files <- gsub("\\.txt", "", lf) #切掉后缀.tsv,获得这些名称,为循环准备
files[1]
for (i in seq_along(files)){
rs5995992 = read.table(lf[i], sep = '\t', header = TRUE)
rs5995992 = merge(rs5995992,IBD,by='SNP',all = T)#合并
rs5995992 = na.omit(rs5995992)#去NA值
rs5995992 = select(rs5995992,c('SNP','CHR','BP','A1.x','A2.x','Freq','BETA','SE','P'))
colnames(rs5995992)[4]='A1'
colnames(rs5995992)[5]='A2'
write.table(rs5995992,file = lf[i],row.names = F,sep = '\t',quote = F)
}