1
複数のサブディレクトリに同じ名前のCSVを持つディレクトリがあります。私は、同じ名前のCSVを1つのデータフレームに結合し、サブディレクトリ名を列として追加しようとしています。以下の例では、「データ」という1つのデータフレームと、「実行1」と「実行2」の両方からの観測を含む「名前」という名前の1つのデータフレームがあり、各データフレームにRunという名前の列が追加されます。解決策がCSVの名前には無関心であれば理想的ですが、どんな解決策も非常に役立ちます。ファイル名に基づいてサブディレクトリにrbindファイルを作成
この質問では人は同じ問題を抱えているが、私はR・ソリューションが必要です。Combining files with same name in r and writing them into different files in R
dir <- getwd()
subDir <- 'temp'
dir.create(subDir)
setwd(file.path(dir, subDir))
dir.create('Run1')
dir.create('Run2')
employeeID <- c('123','456','789')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
employeeID <- c('123','456','789')
first <- c('John','Jane','Tom')
last <- c('Doe','Smith','Franks')
data <- data.frame(employeeID,salary,startdate)
name <- data.frame(employeeID,first,last)
write.csv(data, file = "Run1/data.csv",row.names=FALSE, na="")
write.csv(name, file = "Run1/name.csv",row.names=FALSE, na="")
employeeID <- c('465','798','132')
salary <- c(100000, 500000, 300000)
startdate <- as.Date(c('2000-11-1','2001-3-25','2003-3-14'))
employeeID <- c('465','798','132')
first <- c('Jay','Susan','Tina')
last <- c('Jones','Smith','Thompson')
data <- data.frame(employeeID,salary,startdate)
name <- data.frame(employeeID,first,last)
write.csv(data, file = "Run2/data.csv",row.names=FALSE, na="")
write.csv(name, file = "Run2/name.csv",row.names=FALSE, na="")
# list files in all directories to read
files <- list.files(recursive = TRUE)
# Read csvs into a list
list <- lapply(files, read.csv)
# Name each dataframe with the run and filename
names <- sub("\\..*$", "", files)
names(list) <- sub("\\..*$", "", files)
# And add .id = 'run' so that the run number is one of the columns
# This would work if all of the files were the same, but I don't know how to subset the dataframes based on name.
all_dat <- list %>%
bind_rows(.id = 'run')