我有多个具有不同名称的CSV文件,但所有格式都与相同顺序的列和行完全相同,并且具有相同的标签。我希望能够从每个文件中读取特定列,并通过将文件名添加到1个文件R中来重命名这些列。
例如,我想保留季节,范围和工作日(所有文件都相同)以及每个文件中的提取Var3和Var7列。
File1: Season reach weekday Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8
File2: Season reach weekday Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8
File3: Season reach weekday Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8
将合并为:
MergedFile: Season reach weekday File1Var3 File1Var7 File2Var3 File2Var7 File3Var3 File3Var7
这可能吗?
答案 0 :(得分:0)
在分配名称和按数据过滤时将它们读入列表,其代码如下:
names <- c("File1", "File2", "File3")
d <- lapply(names, function(name) {
df <- read.table(name, header=TRUE)
# Remove unneeded columns
df <- df[c('Season', 'reach', 'Var3', 'Var7')]
# Rename columns
varcols <- grepl('Var', names(df))
names(df)[varcols] <- paste0(name, names(df)[varcols])
})
现在已经重命名了列数据列,您可以将它们合并在一起:
Reduce(merge, d)
这将匹配每个数据框中未重命名的列。