从Excel表中提取列并将它们合并到另一个表中

我有许多(数百)excel文件,大约10列10行。

我的目标是创build包含第一列和第二列的单独的 txt文件,然后包含第一个和第三个等等的另一个文件…和其余的Excel文件相同。

有什么办法在Excel中做到这一点? 相反,是否可以在R中应用批处理命令来进入Excel文件(以前导出为CSV或types)以生成包含列配对的单独txt文件?

以下是在R中执行此操作的一种可能的方法。这仅适用于一个csv文件,但它可以很容易地适用于许多文件。

##Simulate data write.csv(matrix(rnorm(100),ncol=10),file="test.csv",row.names=FALSE) data1<-read.csv("test.csv") ##Create the matrix containing the columns numbers for exporting. ##Note the code is not nice. There is a function which gives this ##matrix immediately, but I forgot it. rr<-numeric() for(i in 1:9) for(j in (i+1):10) rr<-rbind(rr,c(i,j)) ##Write the columns in separate files for(i in 1:nrow(rr)) write.csv(data1[,rr[i,]],file=paste("output1_",paste(rr[i,],collapse="_"),".csv",sep=""),row.names=FALSE) 

该代码接受一个名为test.csv文件,并生成types为test.csv文件,其中coln1coln2是列号。

对于许多文件将其封装到一个函数中并遍历所有的csv文件。

随着文件的循环:

 fnames<-list.files(pattern = "myFile*.csv") fnums<-as.integer(sub(".csv", "", sub("myFile", "", fnames, fixed=TRUE), fixed=TRUE)) for(i in seq_along(fnums)) { dta<-read.csv(fnames[i]) #halfnumcols<-dim(dta) %/% 2 #for(j in (seq(halfnumcols)-1)) #{ # write.csv(dta[,j*2+c(1,2)], paste("resultFile", i, ".", (j+1), ".csv", sep="")) #} #EDIT: instead of neighbor pairs, run over all pairs numcols<-dim(dta)[2] apply(combn(seq(numcols), 2), 2, function(curcomb){ write.csv(dta[,curcomb)], paste("resultFile", i, ".", curcomb[1], ".", curcomb[2], ".csv")) }) }