From badc9fc166664647e0564097aa6f4cd0cf6beb0f Mon Sep 17 00:00:00 2001 From: bczernecki Date: Thu, 17 Oct 2024 01:06:09 +0200 Subject: [PATCH] cran fixes --- NEWS.md | 6 +++++ R/clean_metadata_hydro.R | 28 ++++++++++------------ R/hydro_imgw_annual.R | 9 +++---- R/hydro_imgw_daily.R | 6 ++--- R/hydro_imgw_monthly.R | 2 +- data-raw/hydro_parametry_skroty.csv | 35 ++++++++++++++++------------ data/imgw_hydro_abbrev.rda | Bin 977 -> 994 bytes 7 files changed, 45 insertions(+), 41 deletions(-) diff --git a/NEWS.md b/NEWS.md index eec8e9fd..d32dc4b1 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,9 @@ +# climate 1.2.2 + +* Major fixes for adjusting code to stay in line with CRAN policies +* Fixes for `hydro_imgw()` set of functions due to changes in encoding and metadata structure + + # climate 1.2.1 * Corrected duplicated column names for IMGW-PIB stations diff --git a/R/clean_metadata_hydro.R b/R/clean_metadata_hydro.R index 7f6da71d..0879717d 100644 --- a/R/clean_metadata_hydro.R +++ b/R/clean_metadata_hydro.R @@ -9,34 +9,30 @@ clean_metadata_hydro = function(address, interval) { temp = tempfile() test_url(link = address, output = temp) - a = readLines(temp, warn = FALSE) - - a = iconv(a, from = "cp1250", to = "ASCII//TRANSLIT") # remove polish characters - a = gsub(a, pattern = "\\?", replacement = "") # removing extra characters after conversion - - # additional workarounds for mac os but not only... + a = read.csv(temp, header = FALSE, stringsAsFactors = FALSE, + fileEncoding = "CP1250", skip = 1, sep = "\t")$V1 + a = gsub(a, pattern = "\\?", replacement = "") a = gsub(x = a, pattern = "'", replacement = "") - a = gsub(x = a, pattern = "\\^", replacement = "") + a = trimws(gsub(x = a, pattern = "\\^", replacement = "")) + a = gsub(a, pattern = "\\s+", replacement = " ") if (interval == "monthly") { - b = list(data.frame(parameters = a[3:12])) # sklad danych jeszcze nie wiem jak ominąć problem kontroli - # ale on może się zmienić nie wiem czy nie lepiej wykluczyć ostatni rok + b = list(data.frame(parameters = a[1:10])) } if (interval == "daily") { - b = data.frame(parameters = a[3:12]) + b = data.frame(parameters = a[1:10]) } if (interval == "semiannual_and_annual") { - godzina = paste0(a[15], ":", a[16]) # nie jestem pewien czy tak bo w dokumentacji jest podzial na dwie kolumny, - #ale w pliku jest jedna kolumna a pomiaru brak - data = c(a[12:14], godzina) + godzina = paste0(a[13], ":", a[14]) + data = c(a[10:12], godzina) data_od = paste0("wystapienie_od_", data) - data_do = paste0("wystapienie_od_", data) - SPT = unlist(strsplit(a[10], "]/")) # stan/przeplyw/temperatura + data_do = paste0("wystapienie_do_", data) + SPT = unlist(strsplit(a[8], "]/")) # stan/przeplyw/temperatura SPT[1] = paste0(SPT[1], "]") SPT[2] = paste0(SPT[2], "]") b = NULL for (i in seq_along(SPT)) { - tmp = c(a[3:9], SPT[i], data_od, data_do) + tmp = c(a[1:7], SPT[i], data_od, data_do) b = cbind(b, tmp) } b = list("H" = data.frame(parameters = b[, 1]), diff --git a/R/hydro_imgw_annual.R b/R/hydro_imgw_annual.R index 7e36b2d1..3ee96a0f 100644 --- a/R/hydro_imgw_annual.R +++ b/R/hydro_imgw_annual.R @@ -72,7 +72,7 @@ hydro_imgw_annual_bp = function(year = year, ind = grep(readHTMLTable(a)[[1]]$Name, pattern = "/") catalogs = as.character(readHTMLTable(a)[[1]]$Name[ind]) catalogs = gsub(x = catalogs, pattern = "/", replacement = "") - # less files to read: + catalogs = catalogs[catalogs %in% as.character(year)] if (length(catalogs) == 0) { stop("Selected year(s) is/are not available in the database.", call. = FALSE) @@ -81,10 +81,7 @@ hydro_imgw_annual_bp = function(year = year, all_data = vector("list", length = length(catalogs)) for (i in seq_along(catalogs)) { - # i = 1 catalog = catalogs[i] - #print(i) - address = paste0(base_url, interval_pl, "/", catalog, "/polr_", value, "_", catalog, ".zip") temp = tempfile() @@ -104,19 +101,19 @@ hydro_imgw_annual_bp = function(year = year, all_data[[i]] = data1 } all_data = do.call(rbind, all_data) - # ten sam warunek braku danych lub obserwacji dla wszytkich wartosci all_data[all_data == 99999.999] = NA all_data = all_data[, !duplicated(colnames(all_data))] # coords if (coords) { - all_data = merge(climate::imgw_hydro_stations, all_data, by.x = "id", by.y = "Kod stacji", all.y = TRUE) + all_data = merge(climate::imgw_hydro_stations, all_data, by.x = "id", by.y = "Nazwa rzeki/jeziora", all.y = TRUE) } #station selection if (!is.null(station)) { if (is.character(station)) { all_data = all_data[substr(all_data$`Nazwa stacji`, 1, nchar(station)) == station, ] if (nrow(all_data) == 0) { + stop("Selected station(s) is not available in the database.", call. = FALSE) } } else if (is.numeric(station)) { diff --git a/R/hydro_imgw_daily.R b/R/hydro_imgw_daily.R index a1940ed8..24695763 100644 --- a/R/hydro_imgw_daily.R +++ b/R/hydro_imgw_daily.R @@ -133,7 +133,7 @@ hydro_imgw_daily_bp = function(year, all_data[[i]] = merge(data, data2, by = c("Kod stacji", "Nazwa stacji", "Rok hydrologiczny", "Nazwa rzeki/jeziora", - "Wskaznik miesiaca w roku hydrologicznym", "Dzien"), + "Wskaźnik miesiąca w roku hydrologicznym", "Dzień"), all.x = TRUE) } @@ -168,8 +168,8 @@ hydro_imgw_daily_bp = function(year, all_data = all_data[order(all_data$`Nazwa stacji`, all_data$`Rok hydrologiczny`, - all_data$`Wskaznik miesiaca w roku hydrologicznym`, - all_data$`Dzien`), ] + all_data$`Wskaźnik miesiąca w roku hydrologicznym`, + all_data$`Dzień`), ] # dodanie opcji dla skracania kolumn i usuwania duplikatow: all_data = hydro_shortening_imgw(all_data, col_names = col_names, ...) diff --git a/R/hydro_imgw_monthly.R b/R/hydro_imgw_monthly.R index ce7c605e..9b58d115 100644 --- a/R/hydro_imgw_monthly.R +++ b/R/hydro_imgw_monthly.R @@ -123,7 +123,7 @@ hydro_imgw_monthly_bp = function(year, all_data = all_data[order(all_data$`Nazwa stacji`, all_data$`Rok hydrologiczny`, - all_data$`Wskaznik miesiaca w roku hydrologicznym`), ] + all_data$`Wskaźnik miesiąca w roku hydrologicznym`), ] all_data = hydro_shortening_imgw(all_data, col_names = col_names, ...) return(all_data) diff --git a/data-raw/hydro_parametry_skroty.csv b/data-raw/hydro_parametry_skroty.csv index ed29e7a9..22b425cd 100644 --- a/data-raw/hydro_parametry_skroty.csv +++ b/data-raw/hydro_parametry_skroty.csv @@ -1,23 +1,28 @@ fullname;abbr_eng;fullname_eng;; Kod stacji;id;ID;; Dzien;dd;Day;; -Miesiac kalendarzowy;mm;Month;; +Dzień;dd;Day;; +Miesiąc kalendarzowy;mm;Month;; Nazwa rzeki/jeziora;riv_or_lake;River_or_Lake;; Nazwa stacji;station;Station;; -Przeplyw [m^3/s];Q;Flow [m3_s];; -Rodzaj wielkosci (H - stan wody, Q - przeplyw, T - temperatura wody);Mesu;"Measurement [state - H, flow - Q, or temperature - T]""";;` +Przepływ [m^3/s];Q;Flow [m3_s];; +Rodzaj wielkości (H - stan wody, Q - przepływ, T - temperatura wody);Mesu;Measurement [state - H, flow - Q, or temperature - T];;` Rok hydrologiczny;hyy;Hydrologic year;; Stan wody [cm];H;State [cm];; Temperatura wody [st. C];T;Temperature [C];; -Wskaznik ekstremum;idex;Extreme ID [min - 1, mean - 2, Max - 3];; -Wskaznik ekstremum (1 - minimum, 2 - srednia, 3 - maksimum);idex;Extreme ID [min - 1, mean - 2, Max - 3];; -Wskaznik miesiaca w roku hydrologicznym;idhyy;Hydrologic year ID;; -Wskaznik polrocza (13 - zima, 14 - lato, 15 - rok);idyy;Year ID [13 -winter, 14 - summer, 15 - year];; -wystapienie_od_Dzien;bedd;Occurrence from day;; -wystapienie_od_Godzina:Minuta;behm;Occurrence from time;; -wystapienie_od_Miesiac;bemm;Occurrence from month;; -wystapienie_od_Rok;beyy;Occurrence from year;; -Grubosc lodu [cm];thick;Thickness of ice [cm];; -Kod zjawiska lodowego (slownik ponizej);id_ice;Ice phenomena;; -"Procent udzialu zjawiska lodowego [mnoznik *10; np. 3 oznacza 30% udzialu zjawisk lodowych]";p_ice;Percentage of ice phenomena;; -Kod zarastania (slownik ponizej);id_over_grow;Overgrowing;; +Wskaźnik ekstremum;idex;Extreme ID [min - 1, mean - 2, Max - 3];; +Wskaźnik ekstremum (1 - minimum, 2 - średnia, 3 - maksimum);idex;Extreme ID [min - 1, mean - 2, Max - 3];; +Wskaźnik miesiąca w roku hydrologicznym;idhyy;Hydrologic year ID;; +Wskaźnik półrocza (13 - zima, 14 - lato, 15 - rok);idyy;Year ID [13 -winter, 14 - summer, 15 - year];; +wystapienie_od_Dzień;bedd;Occurrence from day;; +wystapienie_od_Godzina:Minuta;behm;Occurrence start time;; +wystapienie_od_Miesiąc;bemm;Occurrence start month;; +wystapienie_od_Rok;beyy;Occurrence start year;; +wystapienie_do_Dzień;bedd;Occurrence start day;; +wystapienie_do_Godzina:Minuta;behm;Occurrence end time;; +wystapienie_do_Miesiąc;bemm;Occurrence end month;; +wystapienie_do_Rok;beyy;Occurrence end year;; +Grubość lodu [cm];thick;Thickness of ice [cm];; +Kod zjawiska lodowego (słownik poniżej);id_ice;Ice phenomena;; +"Procent udziału zjawiska lodowego [mnożnik *10; np. 3 oznacza 30% udziału zjawisk lodowych]";p_ice;Percentage of ice phenomena;; +Kod zarastania (słownik poniżej);id_over_grow;Overgrowing;; diff --git a/data/imgw_hydro_abbrev.rda b/data/imgw_hydro_abbrev.rda index 19968b1c887769f38360bbb143882516c5c1c443..88c894255611345ce2e129a862c0fe441cda1648 100644 GIT binary patch literal 994 zcmV<810DPyiwFP!000001D#ggZW~1u-qdkRlZO7dDM%I45fUOnPTJH&LR7t~NfUu- zevBxx+SO!tY>#(m#+u#D#(PyoAReNR!5!)y-ACay2xsh>c(XP|>V@s^%y<6woHJ*A z*nH7gda>j?FAcGCDE*8KAZ0WRWd6ouu(k^u z+FC#={ZSnbP#jwGIFj9wxrbrNJ zZrwOppE}{D)|dw<86=mV!baVm8VvvXBR^Bp%Ls0lfUDNDIDLyNa&#)~_kZ)T|Br!1_J}D{L0Wm)AlxS?mywJXUPiQ3nKQt=6 zFErBA(6whOImW?y_dA5rPbTd*<=3|%8<3P?RW&P9+LN#rDi)1ks&pJp5wDc49j6`Zlf4$7vBo^c`U2 zKk_MF>nqH+$e)8aH)vV06IUuXBmp%?*Dy%Tq%h*bfdPvx8YKo-`XhUf7IrOYTSey6 z(>b`x{HYldQ+!M>QbXM5Q_KtagY~O%pLu~1t}@?co_*Nruprz(N}f>V_LNM^1>I}f zXK#|xEUdPqi2FuZIb_-m*7b)%U5_r+b$KV0di6Ej$S$Al79~-Fi$f1oN4J6Eeci1? zSF3KoK^>$jY&y-ht?|v>i}e5_N|fF2M`JgI6?d~;aL{>bkH7rxRPQVbdri!W3G}^H z2TqAbkLu7OrwAG!sD7uE9bA;N{>wy!j^0@*6ERh0X+;U=V?nPiZDqaHo_k)R6crwY zu96)5i$1ItD6F80A!gjR;NA?$3tgKvE!6Su3^|QiOb6eJ#fW!HR54!JtPpLrttVE{ zC<569oX}zeSN2dI_NkCKDE1Y5f1fJ7h)9oGld{V4a~w)N+D!CHe;2BPa2lDBub9J+ zx=9#n!pi!OgiF!bTo=oa&q@xxkVMv@JzVlhOg6hpyS%J^9kbfBIjrdG_8Py=&(HtH QpMUh{UxP#Er2Gf~0L#MU)c^nh literal 977 zcmV;?11|hRT4*^jL0KkKS?wKFX#fG_f5HF%|4LH#{}>PN{OiB}-|#>H01yBH&;xqj z-PT+?VAXKZ8mYB5rew-JMrt%P02qJ_L8t0Rr1dc}0MUt{)X^FSQ))D6l+m?4N2mY* z13=S2XaLX}Gz^eTf|`1n7$ZYQfB*nA0000DG;Kk{Lq<&+G-;uckir1S0g!2+00uzF z0#HI}G}P15Pbr>2ri{`601Y$%003yyO$sukMl=F-2CO{+C*24^YP%RoX+llOrn&$R z#21Ct5fC8pkvwIK?zX3)olHIrCGj34`ZpGCuKJ25m6bF;96HYO zU!=DQ!+_jypotOy4Uh~B3V?~FKwwl$l@J8Ppa^|b@Tvkjq9ro34+IW@I6tmzV>Ikc z)saCO6~%G}54q)q9PuncAdt>`4i-G{!9|xUQxQS}p|&w(lr?K`TA$UU6ciL3TqTKF zYB{2U+Z(?z!7(K3#Zcvy(;ycNAg@jYG`2`hqG0S(PA6Ps5ps-Au~b9Q@zSrgfs}?s zfF-mu)&nG@roYUE{bujrwiu|npOqD!MS#l+%56i>p>f@r6lZH7W!#+{4ht{Uc5S#V zNs=x?^gU41ZOYAx21GUnShaSmj#ZUAJ$3%!?D&pDDiop8t# zj8ehT7^_a!?Xg9YR)V1Ggj|>LjLUWw72QMTq$UbdoJ)4SJ0oXH3SyAktXCjZFlgBz z8-#Eb6u#M{I9bW1wpVehwXSP>)HgS;CW!`OHA4`sR31khShrG`ddwn&N+u77#eji7 zlzC$$paOUWU@HnuC6u=B7|_?L9N@*8oURxZLZ zyge@bn*bL=pG@d7C;=AU2}*GV zEH1x3LdKBGhwugGrNEtR_&$PyOT+ANaeHDZ+$@XzHs-I3}y*