将多个数据帧合并为R中的一个后,更改列名称

时间:2014-05-16 16:32:56

标签: r merge plyr

将多个数据帧合并为一个之后,我想知道如何更改主数据框中的列标题以表示它们来自的原始文件。我使用下面的代码将大量数据框合并为一个:

library(plyr) 

dflist = list.files(path=dir, pattern="csv$", full.names=TRUE, recursive=FALSE) 
import.list = llply(dflist, read.csv) 
Master = Reduce(function(x, y) merge(x, y, by="Hours"), import.list)

我希望属于每个原始数据帧的列由原始数据帧/ csv文件命名的唯一ID命名(即aa,ab,ac)。文件名中的唯一ID紧跟在低行之前(" _"),因此我可以使用下面的代码将它们隔离。但是,我现在无法将其应用于列标题。任何帮助将不胜感激。

filename = dflist[1]
unqID = strsplit(filename,"_")[[1]][1]

1 个答案:

答案 0 :(得分:1)

您可以在llply来电中定义一项功能,并read.csv指定名称。 或者在合并@joran建议之前和之后重新命名它们

#First get the names
filenames = dflist
#I am unsure about the line below, as I
unqID = lapply(filenames,function(x) strplit(x,"_")[1])
names(import.list) <- paste("unqID", names(import.list),sep=".") #renaming the list items

然后使用您的代码合并