我有一个看起来像这样的文件夹
> 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"
有谁知道我该怎么做?
答案 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删除这些文件的文件。