使用文件名的一部分重命名df的每一列 - R

时间:2018-05-24 16:18:15

标签: r

我的文件具有命名约定和所有相同的列名:

ABC_file_name_25
ABC_file_name_50
ABC_file_name_100

我希望每个df的列名都代表它们来自哪个文件。所以现在所有df都有:

col1    col2     col3

我希望他们成为:

DF1

col1_ABC_25    col2_ABC_25    col3_ABC_25

df2

col1_ABC_50    col2_ABC_50    col3_ABC_50

DF3

col1_ABC_100    col2_ABC_100    col3_ABC_100

到目前为止,我有这个,但我不确定如何将名称应用于列:

library(tools)

# Working Directory
setwd("C:/.../Files")

# Get a list of files to read in
temp = list.files(pattern="*.csv")
# Remove .csv
file_name = file_path_sans_ext(temp)
# Get the start of filename prefix 
prefix = sub("_.*", "", file_name[1:1])
# Get the suffix number
suffix = sub(".*_", "", file_name)

# Name each df by its filename
for (i in 1:length(temp)) assign(file_path_sans_ext(temp[i]), read.csv(temp[i]))
# Place all df into a list using their prefix
list <- lapply(ls(pattern=prefix), function(x) get(x))

1 个答案:

答案 0 :(得分:1)

这会将每个文件作为数据框加载,根据需要更改列名,然后将它们收集到列表中。

end