R/CButtonFile_function.R

Defines functions CButtonFile

Documented in CButtonFile

#' ReVuePro: CButtonFile
#'
#' A simple function to take a .csv output from WeeButton (TM) software, clean it, and re-organize it into something more useful.
#' @param FileToConvert The path to your .csv file to clean. There is no default input.
#' @keywords WeeButton, iButton
#' @export
#' @import dplyr openxlsx rio rlang
#' @examples
#' setwd("C:/Users/Tabby/Desktop/Cat")
#' TheTemperatureofKittens<-as.data.frame(CButtonFile("iButtonReadings.csv"))
#' print(TheTemperatureofKittens)

CButtonFile<-function(FileToConvert){
             require('rlang')
             require('dplyr')
     	     require('openxlsx')
             require('rio')

            if(gsub("^.*\\.", "", FileToConvert)=="xlsx"){
	      File_Dir = gsub(basename(FileToConvert),"", FileToConvert)
     	      File_Name = gsub("\\..*", "", basename(FileToConvert))
     	      File_CSV = paste(File_Dir, File_Name, ".csv", sep="")
              convert(FileToConvert, File_CSV)
              iButton = read.csv(File_CSV)
             }

            if(gsub("^.*\\.", "", FileToConvert)=="xls"){
	      File_Dir = gsub(basename(FileToConvert),"", FileToConvert)
     	      File_Name = gsub("\\..*", "", basename(FileToConvert))
     	      File_CSV = paste(File_Dir, File_Name, ".csv", sep="")
              convert(FileToConvert, File_CSV)
              iButton = read.csv(File_CSV)
             }

           if(gsub("^.*\\.", "", FileToConvert)=="csv"){
             iButton<-read.csv(FileToConvert)
             }

             iButton<-iButton[-c(1:33),c(1,3)]
             colnames(iButton)=c("Time","Temperature")

Origin=getwd()

{
   File_Dates<-c()
   File_Dates<-c(gsub("[[:space:]].*", "",iButton[,1]))
   File_Year<-c()
   File_Year<-c(gsub("[[:punct:]].*", "",File_Dates))
   File_Month<-c() 
   File_Month<-c(gsub("[[:punct:]].*", "", sub(".*?[[:punct:]]", "", File_Dates)))
   File_Day<-c()
   File_Day<-c(gsub(".*[[:punct:]]", "",File_Dates))
   
   for(i in 1:length(File_Month)){
         if(nchar(File_Month[i])==1){
         File_Month[i]<-as.character(paste("0",File_Month[i],sep=""))
         } else {
         File_Month[i]<-File_Month[i]
         }
      }

   for(i in 1:length(File_Day)){
         if(nchar(File_Day[i])==1){
         File_Day[i]<-as.character(paste("0",File_Day[i],sep=""))
         }
      }

   AM.PM<-c()
   if(length(i<- grep("AM", iButton[,1])))
   cat("'AM' appears at least once in\n\t", iButton[,1], "\n")
   AM.PM[i]<-"AM"
   
   if(length(j<- grep("PM", iButton[,1])))
   cat("'PM' appears at least once in\n\t", iButton[,1], "\n")
   AM.PM[j]<-"PM"
   
   iButton$AMPM<-AM.PM
   iButton[,1]<-c(gsub(" AM*", "",iButton[,1]))
   iButton[,1]<-c(gsub(" PM*", "",iButton[,1]))

   Year = File_Year[1]
   Month = File_Month[1] 
   Day = File_Day[1]
   
   Date = paste(Year,Month,Day,sep="")
   
   if(length(grep("/", iButton[,1]))>= 1){
     Temp.Type="Ugly"
     decon=strsplit(iButton[,1], "/")
     Year = c() 
     Month = c()
     Day = c()

     for(k in 1:length(iButton[,1])){
        Year[k]=as.character(as.numeric(gsub("[[:space:]].*", "", decon[[1]][3])))
        Month[k]=as.character(as.numeric(decon[[k]][1]))
        Day[k]=as.character(as.numeric(decon[[k]][2]))
     }
     for(k in 1:length(iButton[,1])){
         if(nchar(Month[k])==1){
            Month[k]=paste("0",Month[k],sep="")
         }
         if(nchar(Day[k])==1){
            Day[k]=paste("0",Day[k],sep="")
         }
     }
     Date = paste(Year[1],Month[1],Day[1],sep="")
     iButton[,1]<-gsub(paste(paste(as.numeric(Month),as.numeric(Day),Year, sep="/"), " ", sep=""), "",iButton[,1]) 
     } else {
     Temp.Type="Proper"
     iButton[,1]<-gsub(paste(paste(Year,Month,Day, sep="-"), " ", sep=""), "",iButton[,1]) 
     }
 
    iButton$Date<-Date
   
    hours<-c()
    for(i in 1:nrow(iButton)){
    hours[i]<-c(sapply(strsplit(iButton[i,1], ":"), function(n) as.numeric(n)))}
    iButton$temp<-hours

   rearr<-vector('list', nrow(iButton))
   for(i in length(rearr))
   rearr[[i]]<-c()
   global.sec<-c()
     for(i in 1:nrow(iButton)){
     rearr[[i]]<-c(sapply(strsplit(iButton[i,1], ":"), function(n) as.numeric(n)))}

     for(i in 1:length(rearr)){
     if(iButton[i,3]=="AM")
     global.sec[i]<-rearr[[i]][1]*3600+rearr[[i]][2]*60+rearr[[i]][3]
     else(global.sec[i]<-(rearr[[i]][1]+12)*3600+rearr[[i]][2]*60+rearr[[i]][3])
     }

     rm<-c(which(iButton$temp==12))
     global.sec[rm]<-global.sec[rm]-(12*3600)
     
     iButton<-iButton[,-5]
     iButton$TIS<-global.sec
     
    iButton = iButton %>% select(Date, Time, AMPM, TIS, Temperature)
    }
    name<-paste(paste(Date, "rMod", sep=""),"csv",sep=".")

    if(nchar(basename(FileToConvert))==nchar(FileToConvert)){
    write.csv(iButton, name, row.names=FALSE)
    } else {
    saveDir=gsub(basename(FileToConvert),"", FileToConvert)
    setwd(saveDir)
    write.csv(iButton, name, row.names=FALSE)
    setwd(Origin)   
    }
}
joshuakrobertson/R-Package_ReVuePro documentation built on June 2, 2020, 8:23 p.m.