Files
ledgerr/working.Rmd
Matt 8ea93f8c98 Prework on new versions of functions using aggregate().
Should have started with this function!
2016-04-13 13:54:42 -05:00

64 lines
2.0 KiB
Plaintext

---
title: "Untitled"
author: "Matt"
date: "April 7, 2016"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
Should use this document for actual operations and keep actual functions in another document for the public [GitHub repo](https://github.com/mattbk/ledgerr). Shiny will be set up at https://www.shinyapps.io/admin/#/dashboard.
```{r}
# Use https://github.com/maxconway/gsheet
library(gsheet)
# Pull Google sheet locations from another file (journal1, journal2, etc.)
source("config.R")
# Combine bank accounts
journal<-rbind(journal1,journal2)
## Clean up
# Date is date
journal$Date<-as.Date(journal$Date,format="%m/%d/%Y")
# Replace empty classes and accounrs
journal$Class[journal$Class==""]<-c("unclassified")
journal$Account[journal$Account==""]<-c("unclassified")
# Class, Accounts are factors
journal$Class<-as.factor(journal$Class)
journal$Account<-as.factor(journal$Account)
# Empty class should be NA
# Debit and Credit are numeric, without commas
journal$Debit<-as.numeric(sub(",","",journal$Debit))
journal$Credit<-as.numeric(sub(",","",journal$Credit))
# See other reports in QB and Ledger
################# work in progress
# This could replace net.acc, check numbers
a<-aggregate(cbind(Credit,Debit=-Debit)~Account,data=journal,function(x) sum(x, na.rm=TRUE),na.action="na.pass")
# na.pass: http://stackoverflow.com/a/16844940/2152245
# Calculate net column
a$Net<-rowSums(a[,2:3],na.rm=T)
# Calculate total--need to clean up
colSums(a[-1])
# This is a column rename on the fly: "Debit=-Debit"
# This could replace net.class, check numbers
a<-aggregate(cbind(Credit,Debit=-Debit)~Class,data=journal,function(x) sum(x, na.rm=TRUE),na.action="na.pass")
# Calculate net column
a$Net<-rowSums(a[,2:3],na.rm=T)
# Calculate total--need to clean up
colSums(a[-1])
# This could also replace net.class if in the right layout (http://nicercode.github.io/guides/repeating-things/)
class.split<-split(journal,journal$Class)
sapply(class.split, net)
```