Create package ledgerr and move existing functions there.
This commit is contained in:
2
ledgerr/.Rbuildignore
Normal file
2
ledgerr/.Rbuildignore
Normal file
@ -0,0 +1,2 @@
|
||||
^.*\.Rproj$
|
||||
^\.Rproj\.user$
|
3
ledgerr/.gitignore
vendored
Normal file
3
ledgerr/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
.Rproj.user
|
||||
.Rhistory
|
||||
.RData
|
9
ledgerr/DESCRIPTION
Normal file
9
ledgerr/DESCRIPTION
Normal file
@ -0,0 +1,9 @@
|
||||
Package: ledgerr
|
||||
Title: R Functions For Bookkeeping (one line, title case)
|
||||
Version: 0.0.0.9000
|
||||
Authors@R: person("Matt", "Burton-Kelly", email = "bedrocks@gmail.com", role = c("aut", "cre"))
|
||||
Description: This package acts as a frontend for simple bookkeeping spreadsheets and provides functions for reports.
|
||||
Depends: R (>= 3.2.4)
|
||||
License: GNU Affero General Public License” version 3 (AGPL-3)
|
||||
Encoding: UTF-8
|
||||
LazyData: true
|
2
ledgerr/NAMESPACE
Normal file
2
ledgerr/NAMESPACE
Normal file
@ -0,0 +1,2 @@
|
||||
# Generated by roxygen2: fake comment so roxygen2 overwrites silently.
|
||||
exportPattern("^[^\\.]")
|
18
ledgerr/R/net.R
Normal file
18
ledgerr/R/net.R
Normal file
@ -0,0 +1,18 @@
|
||||
net<-function(journ,
|
||||
classselect="all",
|
||||
accselect="all",
|
||||
dates="all"){
|
||||
if("all" %in% classselect) {
|
||||
classselect<-levels(journ$Class)
|
||||
}
|
||||
if("all" %in% accselect) {
|
||||
accselect<-levels(journ$Account)
|
||||
}
|
||||
if("all" %in% dates) {
|
||||
dates<-c(min(journ$Date),max(journ$Date))
|
||||
}
|
||||
net<-sum(journ$Credit[journ$Class %in% classselect & journ$Account %in% accselect & journ$Date>=dates[1] & journ$Date<=dates[2]],
|
||||
na.rm=T)-sum(journ$Debit[journ$Class %in% classselect & journ$Account %in% accselect & journ$Date>=dates[1] & journ$Date<=dates[2]],
|
||||
na.rm=T)
|
||||
return(net)
|
||||
}
|
29
ledgerr/R/net.acc.R
Normal file
29
ledgerr/R/net.acc.R
Normal file
@ -0,0 +1,29 @@
|
||||
net.acc<-function(journ,
|
||||
classselect="all",
|
||||
accselect="all",
|
||||
dates="all",
|
||||
total=F) {
|
||||
# List of classes - need to do this here before passing to net()
|
||||
if("all" %in% accselect) {
|
||||
accselect<-unique(journ$Account)
|
||||
}
|
||||
# Set up data frame
|
||||
net.acc.out<-data.frame(Account=character(),
|
||||
Net=numeric(),
|
||||
stringsAsFactors=FALSE)
|
||||
# Loop through accounts, calculate net, and add to data frame
|
||||
for (i in 1:length(accselect)) {
|
||||
net.acc.out[i,] <- c(as.character(accselect[i]),
|
||||
net(journ,
|
||||
classselect=classselect,
|
||||
accselect=accselect[i],
|
||||
dates=dates))
|
||||
}
|
||||
# Sort by account name
|
||||
net.acc.out<-net.acc.out[order(net.acc.out$Account) , ]
|
||||
# Add total net row
|
||||
if(total) {
|
||||
net.acc.out[nrow(net.acc.out)+1,]<-c("Total",net(journal))
|
||||
}
|
||||
return(net.acc.out)
|
||||
}
|
27
ledgerr/R/net.class.R
Normal file
27
ledgerr/R/net.class.R
Normal file
@ -0,0 +1,27 @@
|
||||
net.class<-function(journ,
|
||||
classselect="all",
|
||||
accselect="all",
|
||||
dates="all",
|
||||
total=F) {
|
||||
# List of classes
|
||||
if("all" %in% classselect) {
|
||||
classselect<-levels(journ$Class)
|
||||
}
|
||||
# Set up data frame
|
||||
net.class.out<-data.frame(Class=character(),
|
||||
Net=numeric(),
|
||||
stringsAsFactors=FALSE)
|
||||
# Loop through classes, calculate net, and add to data frame
|
||||
for (i in 1:length(classselect)) {
|
||||
net.class.out[i,] <- c(classselect[i],
|
||||
net(journ,
|
||||
classselect=classselect[i],
|
||||
accselect=accselect,
|
||||
dates="all"))
|
||||
}
|
||||
# Add total net row
|
||||
if(total) {
|
||||
net.class.out[nrow(net.class.out)+1,]<-c("Total",net(journal))
|
||||
}
|
||||
return(net.class.out)
|
||||
}
|
18
working.Rmd
18
working.Rmd
@ -36,24 +36,6 @@ journal$Debit<-as.numeric(sub(",","",journal$Debit))
|
||||
journal$Credit<-as.numeric(sub(",","",journal$Credit))
|
||||
|
||||
## Temp function location
|
||||
# TODO https://github.com/mattbk/ledgerr/issues/1
|
||||
########## net() function, takes journal, class name(s), and date range as arguments
|
||||
net<-function(journ,classselect="all",accselect="all",dates="all"){
|
||||
if("all" %in% classselect) {
|
||||
classselect<-levels(journ$Class)
|
||||
}
|
||||
if("all" %in% accselect) {
|
||||
accselect<-levels(journ$Account)
|
||||
}
|
||||
if("all" %in% dates) {
|
||||
dates<-c(min(journ$Date),max(journ$Date))
|
||||
}
|
||||
net<-sum(journ$Credit[journ$Class %in% classselect & journ$Account %in% accselect & journ$Date>=dates[1] & journ$Date<=dates[2]],
|
||||
na.rm=T)-sum(journ$Debit[journ$Class %in% classselect & journ$Account %in% accselect & journ$Date>=dates[1] & journ$Date<=dates[2]],
|
||||
na.rm=T)
|
||||
return(net)
|
||||
}
|
||||
##########
|
||||
|
||||
########## Net table by class
|
||||
net.class<-function(journ,
|
||||
|
Reference in New Issue
Block a user