#r
Вопрос:
Как загрузить из нескольких файлов из разных папок в r, а затем выполнить привязку строк.
Например, папки называются «неделя 1», «неделя 2», «неделя 3» … и все они находятся в главной папке «Year_2020».
В каждой еженедельной папке «неделя 1″, неделя 2»,… есть 7 различных папок, соответствующих каждому дню недели, и они названы в формате ГГГГММДД. Таким образом, папка «week1″ имеет 7 разных имен папок»20200101», «20200102»,…..»20200107″. Каждая из этих папок имеет имя файла csv VIEW_YYYYMMDD.csv, как показано ниже. Но у них нет никакой колонки дат.
Структура папок выглядит следующим образом
YEAR_2020 week1 20200101 view_20200101.csv
week1 20200102 view_20200102.csv
-------- -----------------
week1 20200107 view_20200107.csv
week2 20200108 view_20200108.csv
------ -------- -----------------
образец csv — файлов
df <- data.frame(Emp_Id = c(1,1,1,1,2,2,2,3,3),
time = c(5,2,80,3,3,1,90,80,5),
A = c(111,111,111,222,222,222,333,333,333))
Emp_Id time
1 5 111
1 2 111
1 80 111
1 3 222
2 3 222
2 1 222
2 90 333
3 80 333
3 5 333
Моя проблема в том, что у меня нет столбца даты в csv-файлах, и я хочу сначала добавить столбец даты для каждого из этих отдельных файлов с соответствующей датой, а затем загрузить и связать строки, а затем в r?
Большинство решений просят хранить все файлы в одной папке, но у меня есть 52 папки, соответствующие 52 неделям папки «YEAR_2020», и в каждой папке по 7 папок, каждая из которых соответствует каждой дате недели. Таким образом, существует 365 файлов «view_yyyymmdd.csv»
Пожалуйста, помогите!
Ответ №1:
Попробуйте что-нибудь вроде этого:
library(tidyverse)
library(lubridate)
main_folder %>%
list.files(full.names = TRUE, recursive = TRUE) %>%
map(read_csv) %>%
setNames(., basename(.)) %>%
imap(
~mutate(.x, date = ymd(str_extract(.y, "[0-9] ")))
) %>%
bind_rows()
где main_path
путь к папке, содержащей папки недели.