簡體   English   中英

在不同文件夾中加載 r 中的多個文件

[英]Loading multiple files in r within different folders

如何從 r 中不同文件夾的多個文件加載,然后進行行綁定。

例如,文件夾被命名為“week1”、“week2”、“week3”……它們都在主文件夾“Year_2020”中。

在每個每周文件夾“week1”,week2”,......有7個不同的文件夾對應於一周中的每一天,它們以YYYYMMDD格式命名。所以文件夾“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”文件

請幫忙!

嘗試這樣的事情:

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是包含周文件夾的文件夾的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM