#' 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)
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.