我有一个包含数千个数据文件的文件夹(没有标签,只有列号)。我还有一个CSV,其中包含1)文件夹中的文件名,2)列标题编号和3)列标签。 我需要的是第3号!文件中的数据列按照相同的顺序不。所以我想将正确的列名称与每个数据文件匹配,并通过匹配它们将它们绑定在一起(如查找表,但是对于标题)。
这是"查询标题"虚拟数据:
sample_weights
这里是文件的样子:
filenames <- c("file1", "file1", "file1","file2","file2", "file2", "file3", "file3", "file3")
num <- c(1, 2, 3, 1, 2, 3, 1, 2, 3)
label <- c("AA", "BB", "CC", "AA", "BB", "CC", "BB", "CC", "AA")
header <- data.frame(filenames,num,label)
> header
filenames num label
1 file1 1 AA
2 file1 2 BB
3 file1 3 CC
4 file2 1 AA
5 file2 2 BB
6 file2 3 CC
7 file3 1 BB
8 file3 2 CC
9 file3 3 AA
然后我遍历我的目录中的这些文件,并根据列名将它们绑定在一起。
> file1
1 2 3
2.3 1.5 202.4
> file2
1 2 3
2.1 1.0 200.8
> file3
1 2 3
1.0 208.1 2.1
所有三个文件的期望结果!
files <- dir("my dir")
z <- NULL
for (file in files) {
x <- read.table(file.path("my dir", file), as.is=TRUE)
names(x) <- c("AA","BB","CC") #this is where I'd like to name according to matching column
z <- rbind(z,x) #bind current file to previous processed file
}
答案 0 :(得分:0)
我们通过'filenames'列获取mget
,split
'标题'的{file'对象的值(假设它在全局环境中),{{1 (来自map2
)purrr
列名称在'y'中带'num'列,用相应的'label'设置列名称
match