0

こんな感じのフォルダがあります

> list.files()
[1] "2013-09-13(1).csv" "2013-09-13.csv"    "2013-09-14.csv"    "2013-09-15.csv"   
[5] "2013-09-16.csv"    "2013-09-17.csv"    "2013-09-18.csv"    "2013-09-19.csv"   
[9] "2013-09-20.csv"    "2013-09-21.csv"    "2013-09-22.csv"    "2013-09-23.csv"   
[13] "2013-09-24.csv"    "2013-09-25.csv"    "2013-09-26(1).csv" "2013-09-26(2).csv"
[17] "2013-09-26.csv"    "2013-09-27.csv"    "2013-09-28.csv"    "2013-09-29.csv"   
[21] "2013-09-30.csv"   

ご覧のとおり、「2013-09-13(1).csv」と「2013-09-13.csv」のように同名のファイルがあります。私がやりたいことは、そのような問題を検出してファイルを rbind できる何らかの形式のループを作成することです

2013-09-03 <- rbind(2013-09-13.csv, 2013-09-13(1).csv)
write.csv(2013-09-03, file="2013-09-03.csv", row.names=FALSE)
2013-09-26 <- rbind(2013-09-26.csv, 2013-09-26(1).csv, 2013-09-26(2).csv)
write.csv(2013-09-26, file="2013-09-26.csv", row.names=FALSE)

最後に、私はこれを見ることができます:

list.files()
[1] "2013-09-13.csv"    "2013-09-14.csv"    "2013-09-15.csv"   "2013-09-16.csv"
[5] "2013-09-17.csv"    "2013-09-18.csv"    "2013-09-19.csv"   "2013-09-20.csv" 
[9] "2013-09-21.csv"    "2013-09-22.csv"    "2013-09-23.csv"   "2013-09-24.csv"
[13] "2013-09-25.csv"    "2013-09-26.csv"    "2013-09-27.csv"    "2013-09-28.csv"
[17] "2013-09-29.csv"    "2013-09-30.csv"

誰も私がこれを行う方法を知っていますか?

4

1 に答える 1

0

これらの行に沿った何かが機能するはずですが、自分で実行していません。

library(data.table)
patternstomatch <- gsub(list.files(), pattern = ".csv", replacement = "")

for (i in patternstomatch)
{
  filestorbind <- list.files(pattern = i)
  if( length(filestorbind ) > 1)
  {
    rbindeddataset <- rbindlist(lapply(filestorbind, read.csv))
    write.csv(rbindeddataset , file = paste(i,".csv", sep = ""))
  }
}

patterntomatch には、「2013-09-13(1)」、「2013-09-13」、「2013-09-14」などが含まれます。ループは、ファイル名でこれらの各文字列を探します。パターンに一致する複数のファイルが見つかった場合、それらをすべて読み取り、rbind して「.csv」として書き出します。

最初の行で gsub アプローチを使用すると、ファイル名に「(」が含まれるファイルを見つけ、file.remove を使用してそれらのファイルを削除できます。

于 2013-10-04T02:47:46.900 に答える