add analysis scripts
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -12,3 +12,4 @@ cli/*.log
|
||||
cli/*.pdf
|
||||
cli/*.aux
|
||||
.DS_Store
|
||||
.Rproj.user
|
||||
|
105
r-scripts/hv2-analysis/.Rhistory
Normal file
105
r-scripts/hv2-analysis/.Rhistory
Normal file
@ -0,0 +1,105 @@
|
||||
source("~/.active-rstudio-document")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
View(amounts)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
View(amounts)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
print(amounts)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
print(amounts)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
print(amounts)
|
||||
print(amounts, digits=2)
|
||||
print(amounts, width=100)
|
||||
print(amounts, width=10)
|
||||
print(amounts, width=100)
|
||||
print(amounts, digits=10)
|
||||
options(pillar.sigfig=7)
|
||||
print(amounts)
|
||||
options(pillar.sigfig=10)
|
||||
print(amounts)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
library(tidyverse)
|
||||
flextable::flextable
|
||||
library(table)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
sum(amounts$fee)
|
||||
sum(amounts$fee) + sum(amounts$overhead)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
sum(amounts$Betriebskosten)
|
||||
sum(amounts$Betriebskosten, na.rm = TRUE)
|
||||
sum(amounts$Betriebskosten, na.rm = FALSE)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
sum(amounts$Betriebskosten)
|
||||
sum(amounts$Betriebskosten, na.rm = T)
|
||||
sum(amounts$Betriebskosten, na.omit())
|
||||
sum(amounts$Betriebskosten
|
||||
)
|
||||
sum(amounts$Betriebskosten)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
amounts$Betriebskosten
|
||||
amounts$Betriebskosten[is.na(.)]
|
||||
amounts$Betriebskosten[is.na()]
|
||||
amounts$Betriebskosten[NA]
|
||||
amounts$Betriebskosten[1]
|
||||
amounts$Betriebskosten[is.na()]
|
||||
amounts$Betriebskosten[is.na]
|
||||
d <- amounts$Betriebskosten
|
||||
d
|
||||
d[is.na(d)]
|
||||
d[is.na(d)] <- 0
|
||||
d
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
View(expense)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
expense
|
||||
expense[overhead_relevant==T]
|
||||
expense[expense$overhead_relevant == T]
|
||||
expense[expense$overhead_relevant == TRUE]
|
||||
expense[expense$overhead_relevant]
|
||||
expense %>% filter(overhead_relevant == TRUE)
|
||||
source("~/Workspace/hv2-all-in-one/r-scripts/hv2-analysis/income.R")
|
||||
View(expense)
|
13
r-scripts/hv2-analysis/hv2-analysis.Rproj
Normal file
13
r-scripts/hv2-analysis/hv2-analysis.Rproj
Normal file
@ -0,0 +1,13 @@
|
||||
Version: 1.0
|
||||
|
||||
RestoreWorkspace: Default
|
||||
SaveWorkspace: Default
|
||||
AlwaysSaveHistory: Default
|
||||
|
||||
EnableCodeIndexing: Yes
|
||||
UseSpacesForTab: Yes
|
||||
NumSpacesForTab: 2
|
||||
Encoding: UTF-8
|
||||
|
||||
RnwWeave: Sweave
|
||||
LaTeX: pdfLaTeX
|
118
r-scripts/hv2-analysis/income.R
Normal file
118
r-scripts/hv2-analysis/income.R
Normal file
@ -0,0 +1,118 @@
|
||||
library(tidyverse, warn.conflicts = FALSE)
|
||||
library(DBI, warn.conflicts = FALSE)
|
||||
library(tidyr, warn.conflicts = FALSE)
|
||||
library(dplyr, warn.conflicts = FALSE)
|
||||
# library(lubridate, warn.conflicts = FALSE)
|
||||
# library(R.utils, warn.conflicts = FALSE)
|
||||
|
||||
|
||||
YEAR <- 2021
|
||||
|
||||
HOME <- Sys.getenv("HOME")
|
||||
Sys.setenv(PGHOST = "db.mainscnt.eu",
|
||||
PGDATABASE = "hv2",
|
||||
PGPORT = 5432,
|
||||
PGUSER = "wn",
|
||||
PGSSLMODE = "verify-ca",
|
||||
PGSSLKEY = paste(HOME, "/keys/psql/wn-postgresql-client-2.key", sep=""),
|
||||
PGSSLCERT = paste(HOME, "/keys/psql/wn-postgresql-client-2.crt", sep=""),
|
||||
PGSSLROOTCERT = paste(HOME, "/keys/psql/postgres-ca.crt", sep=""))
|
||||
|
||||
con <- dbConnect(RPostgres::Postgres())
|
||||
|
||||
res <- dbSendQuery(con, "
|
||||
select f.description as flat,
|
||||
p.description as premise,
|
||||
aec.description as category,
|
||||
sum(ae.amount) as amount
|
||||
from flat_t f,
|
||||
premise_t p,
|
||||
tenancy_t ty,
|
||||
tenant_t t,
|
||||
account_t a,
|
||||
account_entry_t ae,
|
||||
account_entry_category_t aec
|
||||
where p.id = f.premise and
|
||||
ty.flat = f.id and
|
||||
ty.tenant = t.id and
|
||||
a.id = t.account and
|
||||
ae.account = a.id and
|
||||
aec.id = ae.account_entry_category and
|
||||
ae.fiscal_year = $1 and
|
||||
aec.description in ('Mietzahlung', 'Mietforderung', 'Betriebskostenforderung', 'Betriebskostenausgleich')
|
||||
group by p.description,
|
||||
f.description,
|
||||
aec.description;
|
||||
")
|
||||
dbBind(res, list(YEAR))
|
||||
|
||||
income <- dbFetch(res)
|
||||
dbClearResult(res)
|
||||
|
||||
income <- income %>%
|
||||
pivot_wider(names_from = category, values_from = amount) %>%
|
||||
mutate(Miete := -1 * Mietforderung) %>%
|
||||
mutate(Betriebskosten := Mietzahlung - Miete + Betriebskostenausgleich) %>%
|
||||
select(flat, premise, Miete, Betriebskosten) %>%
|
||||
arrange(premise, flat) %>%
|
||||
mutate(across(where(is.numeric), ~num(., digits=2))) %>%
|
||||
mutate(across(where(is.numeric), ~replace(., is.na(.), 0)))
|
||||
|
||||
|
||||
total_fee <- sum(income$Miete)
|
||||
total_overhead <- sum(income$Betriebskosten)
|
||||
total_income <- total_fee + total_overhead
|
||||
|
||||
|
||||
res <- dbSendQuery(con, "
|
||||
select aec.overhead_relevant as overhead_relevant,
|
||||
aec.description as category,
|
||||
sum(ae.amount) as amount
|
||||
from account_entry_category_t aec,
|
||||
account_entry_t ae
|
||||
where aec.id = ae.account_entry_category and
|
||||
aec.id not in (2, 3, 4, 29) and
|
||||
ae.fiscal_year = $1
|
||||
group by aec.overhead_relevant,
|
||||
aec.description
|
||||
")
|
||||
dbBind(res, list(YEAR))
|
||||
|
||||
expense <- dbFetch(res)
|
||||
dbClearResult(res)
|
||||
|
||||
expense <- expense %>%
|
||||
arrange(overhead_relevant, category) #%>%
|
||||
#mutate(across(where(is.numeric), ~num(., digits=2))) #%>%
|
||||
#mutate(across(where(is.numeric), ~replace(., is.na(.), 0)))
|
||||
|
||||
total_expense <- sum(expense$amount)
|
||||
|
||||
overhead_relevant_expense <- expense %>%
|
||||
filter(overhead_relevant == TRUE)
|
||||
|
||||
total_overhead_relevant_expense <- sum(overhead_relevant_expense$amount)
|
||||
|
||||
print("Einkuenfte pro Wohnung")
|
||||
print(income)
|
||||
|
||||
print("Einkuenfte Miete")
|
||||
print(total_fee)
|
||||
print("Einkuenfte Betriebskosten")
|
||||
print(total_overhead)
|
||||
print("Einkuenfte Total")
|
||||
print(total_income)
|
||||
|
||||
print("Ausgaben")
|
||||
print(expense)
|
||||
|
||||
print(total_expense)
|
||||
|
||||
print("davon betriebskosten-relevant")
|
||||
print(total_overhead_relevant_expense)
|
||||
|
||||
profit <- total_income + total_expense
|
||||
print("Überschuss")
|
||||
print(profit)
|
||||
|
||||
|
@ -21,3 +21,71 @@ create or replace view account_statement_v as
|
||||
|
||||
grant select on account_statement_v to hv2;
|
||||
|
||||
|
||||
|
||||
|
||||
create or replace view income_v as
|
||||
select f.description as flat,
|
||||
p.description as premise,
|
||||
ae.amount as amount,
|
||||
ty.id as tenancy_id,
|
||||
t.lastname as tenant
|
||||
|
||||
|
||||
from flat_t f,
|
||||
premise_t p,
|
||||
tenancy_t ty,
|
||||
tenant_t t,
|
||||
account_entry_t ae,
|
||||
account_entry_category_t aec
|
||||
|
||||
where p.id = f.premise and
|
||||
f.id = ty.flat and
|
||||
t.id = ty.tenant and
|
||||
ae.id = t.account and
|
||||
aec.id = ae.account_entry_category and
|
||||
aec.description = 'Mietzahlung' and
|
||||
ae.fiscal_year = 2021
|
||||
;
|
||||
|
||||
|
||||
select f.description as flat,
|
||||
p.description as premise,
|
||||
--ty.id as tenancy_id,
|
||||
--t.lastname || ', ' || t.firstname as tenant,
|
||||
--a.description as account,
|
||||
aec.description as category,
|
||||
sum(ae.amount) as amount
|
||||
from flat_t f,
|
||||
premise_t p,
|
||||
tenancy_t ty,
|
||||
tenant_t t,
|
||||
account_t a,
|
||||
account_entry_t ae,
|
||||
account_entry_category_t aec
|
||||
where p.id = f.premise and
|
||||
ty.flat = f.id and
|
||||
ty.tenant = t.id and
|
||||
a.id = t.account and
|
||||
ae.account = a.id and
|
||||
aec.id = ae.account_entry_category and
|
||||
ae.fiscal_year = 2021 and
|
||||
aec.description in ('Mietzahlung', 'Mietforderung', 'Betriebskostenforderung')
|
||||
|
||||
group by p.description,
|
||||
f.description,
|
||||
aec.description
|
||||
;
|
||||
|
||||
|
||||
|
||||
select aec.overhead_relevant as overhead_relevant,
|
||||
aec.description as category,
|
||||
sum(ae.amount) as amount
|
||||
from account_entry_category_t aec,
|
||||
account_entry_t ae
|
||||
where aec.id = ae.account_entry_category and
|
||||
aec.id not in (2, 3, 4, 29) and
|
||||
ae.fiscal_year = 2021
|
||||
group by aec.overhead_relevant,
|
||||
aec.description;
|
||||
|
Reference in New Issue
Block a user