Чтение и запись нескольких файлов в R с использованием цикла - PullRequest
0 голосов
/ 25 февраля 2019
  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 необработанных текстовых файлов (данные CDR) за ноябрь месяц (1 файл за 1 день) в каталоге, который мне нужно обработать и хранить чистые данные в отдельной папке.Я не хочу запускать код 30 раз, меняя номер дня, и не знаю, как работает форматирование строк в R. Может ли кто-нибудь помочь мне с этим?

Все файлы хранятся в одном форматеНапример, имя файла 16-го дня - «sms-call-internet-mi-2013-11-16.csv»

Файлы читаются с использованием read.csv в функции readCallDetailRecord.

1 Ответ

0 голосов
/ 25 февраля 2019

Вы можете выполнить цикл для 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)
}
...