2013-10-04 194 views
0

我有一個看起來像一個文件夾,這個結合的.csv具有相同名稱的文件夾中

> 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年9月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" 

有誰知道我怎麼能做這個?

回答

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年9月13日(1)」,「2013年9月13日」,「2013年9月14日」等的循環將查找中的每個這些字符串的文件名。如果發現多個文件匹配一個模式,它會將它們全部讀取,並將它們寫成「.csv」。 。

使用第一行的GSUB方法,然後你可以找到有文件「(」在他們的文件名和使用file.remove刪除這些文件

+0

謝謝您,您的解決方案可與這種變化: ) rbindeddataset < - rbindlist(lapply(filestorbind,read.csv)) –

+0

請相應地編輯我的答案,因爲您注意到了它:)。所以我有點新,但我認爲編輯也會讓你獲得點數。 – TheComeOnMan

相關問題