2021-08-09 13:38:11 +02:00
|
|
|
library(DBI)
|
|
|
|
library(tidyr)
|
2021-08-09 23:24:42 +02:00
|
|
|
library(dplyr)
|
|
|
|
library(lubridate)
|
|
|
|
library(R.utils)
|
2021-08-09 13:38:11 +02:00
|
|
|
|
2021-08-09 23:24:42 +02:00
|
|
|
|
2021-08-10 18:10:11 +02:00
|
|
|
get_freq_df <- function(con, startDate, endDate) {
|
2021-08-09 23:24:42 +02:00
|
|
|
startStr <- strftime(startDate, "%Y-%m-%d %H:%M:%S", tz="UTC")
|
|
|
|
endStr <- strftime(endDate, "%Y-%m-%d %H:%M:%S", tz="UTC")
|
|
|
|
|
|
|
|
res <-dbSendQuery(con, "select time, location, freq from mainsfrequency where valid=1 and time >= $1 and time < $2")
|
|
|
|
dbBind(res, list(startStr, endStr))
|
|
|
|
frequencies <- dbFetch(res)
|
|
|
|
dbClearResult(res)
|
|
|
|
|
|
|
|
freq_wide <- frequencies %>%
|
|
|
|
pivot_wider(names_from = location,
|
|
|
|
values_from = freq,
|
|
|
|
values_fn = mean)
|
|
|
|
|
|
|
|
THRESHOLD <- 0.5
|
|
|
|
|
|
|
|
for (colIdx in 2:length(freq_wide)) {
|
|
|
|
last <- freq_wide[[1, colIdx]]
|
|
|
|
for (rowIdx in 1:length(freq_wide[[colIdx]])) {
|
|
|
|
current <- freq_wide[[rowIdx, colIdx]]
|
|
|
|
if (!is.na(current) && !is.na(last) && (abs(current - last) > THRESHOLD)) {
|
|
|
|
freq_wide[[rowIdx, colIdx]] = NA
|
|
|
|
}
|
|
|
|
last <- current
|
2021-08-09 18:10:31 +02:00
|
|
|
}
|
|
|
|
}
|
2021-08-10 18:10:11 +02:00
|
|
|
|
|
|
|
return (freq_wide)
|
|
|
|
}
|
|
|
|
|
|
|
|
con <- dbConnect(RPostgres::Postgres(),
|
|
|
|
dbname='mainscnt',
|
2021-08-10 22:30:52 +02:00
|
|
|
host='db.mainscnt.eu',
|
2021-08-10 18:10:11 +02:00
|
|
|
user='wn')
|
|
|
|
|
|
|
|
|
2021-08-11 10:52:53 +02:00
|
|
|
START <- "2021-08-03 07:00:00"
|
2021-08-10 18:10:11 +02:00
|
|
|
INTERVAL <- 3600
|
|
|
|
|
|
|
|
for (offset in 0:0) {
|
|
|
|
startDate <- ymd_hms(START) + INTERVAL * offset
|
|
|
|
endDate <- startDate + INTERVAL
|
|
|
|
|
|
|
|
freq_wide <- get_freq_df(con, startDate, endDate)
|
2021-08-11 10:52:53 +02:00
|
|
|
freq_wide_names <- names(freq_wide)
|
2021-08-09 23:24:42 +02:00
|
|
|
|
2021-08-10 18:10:11 +02:00
|
|
|
for (colIdx in 2:length(freq_wide)) {
|
2021-08-11 10:52:53 +02:00
|
|
|
colName.mean <- paste("mean.w.o.", freq_wide_names[colIdx], sep="")
|
|
|
|
colName.diff <- paste(freq_wide_names[colIdx], ".to.mean", sep="")
|
2021-08-10 18:10:11 +02:00
|
|
|
freq_wide <- freq_wide %>%
|
|
|
|
rowwise() %>%
|
2021-08-11 10:52:53 +02:00
|
|
|
mutate(!!colName.mean := mean(c_across(freq_wide_names[c(-1, - colIdx)]), na.rm=TRUE)) %>%
|
|
|
|
mutate(!!colName.diff := abs(eval(as.name(colName.mean)) - eval(as.name(freq_wide_names[colIdx]))) * 100)
|
2021-08-10 18:10:11 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2021-08-11 10:52:53 +02:00
|
|
|
means <- freq_wide %>% select(ends_with(".to.mean"))
|
|
|
|
means.means <- apply(means, 2, mean, na.rm=TRUE)
|
|
|
|
|
|
|
|
|
2021-08-10 18:10:11 +02:00
|
|
|
# print(summary(freq_wide))
|
2021-08-09 18:10:31 +02:00
|
|
|
}
|
2021-08-09 23:24:42 +02:00
|
|
|
|
2021-08-09 18:10:31 +02:00
|
|
|
dbDisconnect(con)
|
2021-08-10 18:10:11 +02:00
|
|
|
|
|
|
|
|