使用循环在R中读取和写入多个文件

时间:2019-02-25 11:29:40

标签: r loops file-io string-formatting

  fn.cdrClusterAnalysis <- function(){
  #Data preprocessing
  cdrAcitivityInputDF <- fn.readCallDetailRecord("F:\\BE Project\\Telecom italia\\Full dataset\\November\\sms-call-internet-mi-2013-11-01.txt")
  cdrAcitivityInputDF <- fn.deriveAdditionalFields(cdrAcitivityInputDF)
  newdf = cdrAcitivityInputDF[, c(1,9,10,11,12)]


  newdf1 <-  ddply(newdf, .(square_id , activity_date , activity_hour), summarize, total_activity = sum(total_activity))

  write.csv(newdf1,file = "F:\\BE Project\\Code\\ProcessedDataset\\sms-call-internet-mi-2013-11-01.csv",row.names = FALSE)


}

我在一个月中有30个原始txt文件(CDR数据)(1个文件,为1天)在一个目录中,该目录需要处理并将干净数据存储在单独的文件夹中。我不想将代码更改为星期几运行30次,并且我不知道R中的字符串格式如何工作。有人可以帮我吗?

所有文件都以相同的格式存储,例如,第16天的文件名为“ sms-call-internet-mi-2013-11-16.csv”

使用readCallDetailRecord函数中的read.csv读取文件。

1 个答案:

答案 0 :(得分:0)

您可以循环搜索i,并在每种情况下阅读

paste0("F:\\BE Project\\Telecom italia\\Full dataset\\November\\sms-call-internet-mi-2013-11-",i,".txt")

我不认为您在单个数字前有一个0。您可以通过传递条件来解决此问题:

if (i<10){
paste0("F:\\BE Project\\Telecom italia\\Full dataset\\November\\sms-call-internet-mi-2013-11-0",i,".txt")

完整:

 fn.cdrClusterAnalysis <- function(day){
  if (day<10){
  day=paste0(0,day)
  }
  day=as.character(day)
  #Data preprocessing
  cdrAcitivityInputDF <- fn.readCallDetailRecord(paste0("F:\\BE Project\\Telecom italia\\Full dataset\\November\\sms-call-internet-mi-2013-11-",day,".txt"))
  cdrAcitivityInputDF <- fn.deriveAdditionalFields(cdrAcitivityInputDF)
  newdf = cdrAcitivityInputDF[, c(1,9,10,11,12)]


  newdf1 <-  ddply(newdf, .(square_id , activity_date , activity_hour), summarize, total_activity = sum(total_activity))

  write.csv(newdf1,file = paste0("F:\\BE Project\\Code\\ProcessedDataset\\sms-call-internet-mi-2013-11-",day,".csv"),row.names = FALSE)
}
for (day in 1:30){
    fn.cdrClusterAnalysis(day)
}