Объединение нескольких CSV-файлов с последовательностью имен - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь объединить 700+ CSV-файлов в R. Я смог объединить их успешно, используя код:

library(dplyr)
library(readr)
df <- list.files(full.names = TRUE) %>% 
  lapply(read_csv) %>% 
  bind_rows 

Теперь моя проблема заключается в том, что имена файлов сохраняются как flux.0, flux.1, поток.2 ...... поток.733.R связывает файлы в следующем порядке: flux.0, flux.1, flux.10, flux.100, flux.101 ... и так далее.Поскольку последовательность файлов важна для меня, можете ли вы предложить включить это в приведенный выше код?Большое спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Здесь у вас есть другой ответ, используя ваш собственный подход.Я только что добавил функцию, которая читает CSV и добавляет новый столбец с именем «файл» с именем файла без расширения.

library(dplyr) 
library(readr) 

df <- list.files(full.names = TRUE) %>% 
    lapply(function(x) {a <- read_csv(x);
                        mutate(a, file = tools::file_path_sans_ext(basename(x)))}) %>%
    bind_rows
0 голосов
/ 20 февраля 2019

Мой путь для подобных вещей - получить список всех файлов (как вы это сделали), превратить его в tbl / data.frame, а затем использовать map для чтения файлов и unnest() их,Поэтому я могу сохранить путь / имя файла для каждого загруженного файла.

require(tidyverse)

df <- list.files(path = "path",
                       full.names = TRUE,
                       recursive = TRUE,
                       pattern = "*.csv") %>% 
tbl_df() %>%
mutate(data = map(value, read.csv)) %>%
arrange(value) %>%
unnest(data) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...