[英]R - Adding filepath to each row of a dataframe
我對 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
)
我已經搜索了舊的答案,但無法完成,所以我現在不確定是否可以使用我現有的編碼來完成。
提前致謝!
我想你想要?dirname()
和?basename()
。
dirname(path)
返回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
如果你結合這個答案
https://stackoverflow.com/a/44304004/3438524 (針對問題:一次讀取多個 csv 數據並創建新列)
使用 dirname 和 basename(如 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)))]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.