with loop but not fine

This commit is contained in:
2021-08-09 23:24:42 +02:00
parent 6d4eeab42e
commit 5246793f6a

View File

@ -1,45 +1,58 @@
library(DBI) library(DBI)
library(tidyr) library(tidyr)
library(dplyr)
library(lubridate)
library(R.utils)
con <- dbConnect(RPostgres::Postgres(), con <- dbConnect(RPostgres::Postgres(),
dbname='mainscnt', dbname='mainscnt',
host='172.16.10.27', host='db.mainscnt.eu',
user='wn') user='wn')
START <- "2021-08-02T14:00:00.0Z"
END <- "2021-08-02T15:00:00.0Z"
res <-dbSendQuery(con, "select time, location, freq from mainsfrequency where valid=1 and time >= $1 and time < $2") START <- "2021-08-03 00:00:00"
dbBind(res, list(START, END)) INTERVAL <- 3600
frequencies <- dbFetch(res)
dbClearResult(res)
freq_wide <- frequencies %>% for (offset in 0:23) {
pivot_wider(names_from = location, startDate <- ymd_hms(START) + INTERVAL * offset
values_from = freq, endDate <- startDate + INTERVAL
values_fn = mean)
startStr <- strftime(startDate, "%Y-%m-%d %H:%M:%S", tz="UTC")
endStr <- strftime(endDate, "%Y-%m-%d %H:%M:%S", tz="UTC")
THRESHOLD <- 0.5 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)
for (colIdx in 2:length(freq_wide)) { freq_wide <- frequencies %>%
last <- freq_wide[[1, colIdx]] pivot_wider(names_from = location,
for (rowIdx in 1:length(freq_wide[[colIdx]])) { values_from = freq,
current <- freq_wide[[rowIdx, colIdx]] values_fn = mean)
if (!is.na(current) && !is.na(last) && (abs(current - last) > THRESHOLD)) {
freq_wide[[rowIdx, colIdx]] = NA freq_wide$Linz_AT <- freq_wide$Linz_AT + 0.002
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
} }
last <- current
} }
freq_wide <- freq_wide %>%
rowwise() %>%
mutate(mad = mad(c_across(names(freq_wide)[-1]),
na.rm=TRUE))
# print(summary(freq_wide))
printf("start: %s, end: %s, mad/cnt: %f\n", startStr, endStr, sum(freq_wide$mad) / length(freq_wide$mad))
} }
freq_wide <- freq_wide %>%
rowwise() %>%
mutate(mad = mad(c_across(names(freq_wide)[-1]),
na.rm=TRUE))
# print(summary(freq_wide))
print(sum(freq_wide$mad) / length(freq_wide$mad))
dbDisconnect(con) dbDisconnect(con)