Переименуйте каждый столбец df с частью их имени файла - R - PullRequest
0 голосов
/ 24 мая 2018

У меня есть файлы с соглашением об именах и одинаковыми именами столбцов:

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 голосов
/ 24 мая 2018

Это загрузит каждый файл как фрейм данных, изменит имена столбцов по своему желанию, а затем соберет их в список.

filenames <- list.files(pattern="*.csv")

all_files <- lapply(filenames, function(x) {
    file <- read.csv(x)
    # Get the start of filename prefix 
    prefix = sub("_.*", "", x)
    # Get the suffix number
    suffix = sub(".*_", "", x)

    colnames(file) <- paste(colnames(file), prefix, suffix, sep='_')
    return(file)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...