自动重命名来自文件夹的.csv文件,并将该文件夹名称放入df列中(使用R)?

10 浏览
0 Comments

自动重命名来自文件夹的.csv文件,并将该文件夹名称放入df列中(使用R)?

简短版:我试图合并一堆.csv文件(每个文件位于工作目录的不同子文件夹中),并且还要添加一个列名,指示它们来自哪个子文件夹。

详细版:我试图导入一堆位于目录子文件夹中的.csv文件,它们都被称为"listings.csv",子文件夹具有相应的出租列表日期(例如Data/2022-04-12/listings.csv)。

这些.csv文件中没有现有的日期/标签列(编辑:唯一的日期信息是父文件夹,即目录子文件夹),因此我希望导入它们,从各自的文件夹中添加列名,并将它们合并在一起,以便我可以将它们作为一个大数据集一起使用,并添加一个新的"日期"列。(唉,我并不是创建这些文件的人,否则就不会有这种情况了!)我知道如何合并它们,我知道如何重命名单个文件,我知道如何给一个文件添加列,但我希望批量完成这个操作,因为我有大约20个子文件夹。csv文件与文件夹是一对一的关系,每个csv文件都被称为"listings.csv",所以我希望这应该是相对容易的?(唉。)

我找出了如何从子文件夹中导入文件,但是无法弄清楚如何自动重命名来自各自文件夹的大约20个文件。

例如,这个代码可以工作,但是合并后没有清楚地显示日期(位于子文件夹名称中):

airbnb_listings <- list.files(path = "/Users/cevieth/Desktop/*MTL Rental Research/Rstats Coding/StatsCan and Air BnB Coding/Inside Air BnB Data", 
                       pattern = "listings.csv",
                       recursive = TRUE,
                       full.names = TRUE) %>% 
  lapply(read_csv) %>%  
  reduce(full_join, by = "id")                       

我可以获取子文件夹的列表(即日期的列表),因为我已经查看了这个问题(renaming file based on folder names with R),但它似乎不完全满足我的需求 - 它涉及筛选特定前缀的文件夹,

subfolders <- list.dirs(path = "/Users/cevieth/Desktop/*MTL Rental Research/Rstats Coding/StatsCan and Air BnB Coding/Inside Air BnB Data", full.names = F, recursive = F)

我可以通过以下方式获取一个.csv文件路径名列表:

airbnb_files <- list.files(path = "/Users/cevieth/Desktop/*MTL Rental Research/Rstats Coding/StatsCan and Air BnB Coding/Inside Air BnB Data", pattern="*listings.csv", recursive = TRUE, full.names=TRUE)
airbnb_files

但是我只是无法弄清楚如何得到一个带有父文件夹名称(包含listing.csv日期的目录子文件夹)的tibble或df,以便我可以在不同日期之间比较数据。

我想这只是我的大脑混乱了(在生病时编写代码,啊!),但这应该是可能的,对吗?

0