Импортируйте несколько файлов CSV в R и объедините первые две строки в качестве столбца заголовка - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть около 50 CSV-файлов, которые необходимо импортировать в R, а затем я хочу установить строку заголовка, которая является первыми двумя строками данных в каждом файле. Как пример:

DATE      FIRST  LAST ID
(M/D/Y)   NAME   NAME 

Данные начинаются со строки 3. Я могу импортировать все файлы как их собственный уникальный фрейм данных, который

temp = list.files(pattern="*.csv")
list2env(
  lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))), 
         read.csv), envir = .GlobalEnv)

Но как я могу изменить этот код для объединенияпервые две строки в качестве заголовка

1 Ответ

0 голосов
/ 06 ноября 2019

Я бы порекомендовал прочитать в первых двух строках, сделать нужные имена столбцов, а затем прочитать в остальных, пропустив первые 2 строки. Вот пример для одного файла, который можно найти по адресу filepath x:

cnames = read.csv(x, nrow = 2)
cnames = sapply(cnames, paste, collapse = "")
data = read.csv(x, skip = 2, col.names = cnames)

Я также настоятельно рекомендую вам оставить ваши результаты в виде удобного, простого в использовании list вместо созданияоколо 50 кадров данных в вашей среде. Мое обоснование этой рекомендации подробно изложено здесь . Это может выглядеть так:

temp = list.files(pattern="*.csv")
data_list = list()
for(i in seq_along(temp)) {
  cnames = read.csv(x, nrow = 2)
  cnames = sapply(cnames, paste, collapse = "")
  data_list[[i]] = read.csv(x, skip = 2, col.names = cnames) 
}

names(data_list) = sub(".csv", "", basename(temp), fixed = TRUE)

# Then if you want to combine them all
complete_data = dplyr::bind_rows(data_list, .id = "source_file")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...