将.csv与文件夹中的相同名称组合在一起

时间:2013-10-04 02:43:03

标签: r csv file-io data-manipulation

我有一个看起来像这样的文件夹

> 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&#34 ;.我想要做的是创建一种形式的循环,可以检测到这些问题并对文件进行反复处理

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"

有谁知道我该怎么做?

1 个答案:

答案 0 :(得分: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 = ""))
  }
}

patternstomatch将包含“2013-09-13(1)”,“2013-09-13”,“2013-09-14”等。循环将在文件名中查找这些字符串中的每一个。如果找到与模式匹配的多个文件,它将全部读取它们,将它们rbind并将其写为“.csv”。

在第一行使用gsub方法,然后您可以找到文件名中包含“(”并使用file.remove删除这些文件的文件。