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 = ""))
  }
}

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

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

于 2013-10-04T02:47:46.900 回答