我有多个Excel文件,每个文件有两列。一个是相同的,另一个是不同的文件。
如何按公共列合并所有文件并将其另存为新文件?
注意:
我不希望将它们组合在一起(使用rbind
)。相反,我希望{@ 1}}基于commun列。
对于R:
我有以下格式的文件名。
merge
由于文件名格式,我无法编写脚本来单独读取每个文件。我不知道如何编写一个循环只迭代15,20 ......并以某种方式离开结束部分。
答案 0 :(得分:2)
您可以执行以下操作:
# if those are the only files in the folder, you don't even need a pattern
filelist <- list.files(pattern = "^percent.*\\.csv$") # read all file names according to pattern
files <- lapply(filelist, read.csv, header=TRUE) # read all files in filelist
files <- lapply(files, function(x) x[-1]) # remove first column of each file
DF = Reduce(function(...) merge(..., by = "CommonColumn", all=T), files) # merge all files
x <- sub("^(percent- )(\\d+)(\\s.*)$", "\\2", filelist) # get the file name numbers
names(DF[-1]) <- paste(names(DF[-1]), x, sep = "-") # add file name numbers to column names in DF
write.csv(DF, "myfile.csv") # write data to new file
Reduce()
部分取自here。