R-将文件路径添加到数据帧的每一行

时间:2019-02-26 14:14:19

标签: r dataframe filepath

我对R来说还比较陌生,我正在从同一文件夹的不同子文件夹中的许多.csv文件中创建一个数据框。到目前为止,我已经知道了:

setwd("~/LMB/Top 6 - 2019/Juegos")

Batting.files  <- list.files(path = "~/LMB/Top 6 - 2019/Juegos/",
recursive = T, pattern=c("(statsHomeBatting.csv|statsVisitorBatting.csv)", 
                                       full.names=T))

setwd("~/LMB/Top 6 - 2019/Juegos/")

Batting.Logs <- do.call(rbind,lapply(Batting.files,read.csv, check.names = FALSE, sep = ";"))

文件所在的子文件夹如下:

~\LMB\Top 6 - 2019\Juegos\Lanús at Ferro Feb 10

我想在每列中都有一个变量(将其命名为Batting.Logs$Game,该变量在其中显示目录的最后一部分(在本例中为Lanús at Ferro Feb 10

我已经搜索了旧的答案,但无法完成它,所以现在不确定我可以使用当前的编码来完成它。

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为您想要?dirname()?basename()

  

dirname(path)返回直到但不包括最后一个路径分隔符“”的路径部分。如果没有路径分隔符。

     

basename(path)删除直到最后一个路径分隔符(如果有)的所有路径。

示例:

具有两个路径的数据框,要获取直接的父目录,请首先提取目录名称,然后提取结果的基本名称。

d <- data.frame(path = c('path/to/some/file.csv', 'path/to/another/file.csv'),
                stringsAsFactors = F)

d$file_dir <- basename(dirname(d$path))

d

#>                       path file_dir
#> 1    path/to/some/file.csv     some
#> 2 path/to/another/file.csv  another

答案 1 :(得分:0)

如果您结合使用此答案

https://stackoverflow.com/a/44304004/3438524(对问题:Read multiple csv data and create new columns at one time

具有目录名和基本名(如npjc已发布:https://stackoverflow.com/a/54888162/3438524),这应该可以解决问题。

Batting.files  <- list.files(path = "~/LMB/Top 6 - 2019/Juegos/",
    recursive = T, pattern=c("(statsHomeBatting.csv|statsVisitorBatting.csv)", 
                                           full.names=T))
dt.list <- sapply(file.list, fread, simplify=FALSE,data.table=F)
DT <- rbindlist(dt.list, idcol = 'folder')[, `:=` (folder = basename(dirname(folder)))]