@@ -215,7 +215,8 @@ add_provincial_abbreviations <- function(data){
215215 short_prov <- short_prov.fr
216216 }
217217 data <- data %> %
218- mutate(GEO.abb = factor (as.character(short_prov [!! as.name(data_geography_column )]), levels = c(" CAN" ," BC" ," AB" ," SK" ," MB" ," ON" ," QC" ," NB" ," PE" ," NS" ," NL" ," YT" ," NT" ," NU" ," NTNU" )))
218+ mutate(GEO.abb = factor (as.character(short_prov [!! as.name(data_geography_column )]),
219+ levels = c(" CAN" ," BC" ," AB" ," SK" ," MB" ," ON" ," QC" ," NB" ," PE" ," NS" ," NL" ," YT" ," NT" ," NU" ," NTNU" )))
219220}
220221
221222
@@ -262,44 +263,43 @@ get_cansim_code_set <- function(code_set=c("scalar", "frequency", "symbol", "sta
262263# transforms the value column to nomeric. If table is in semi-wide form it converts the wide for dimension
263264# to long form and creates and modifies the COORDINATE column as needed.
264265transform_value_column <- function (data ,value_column ){
265- symbol_grep_string <- " ^Symbol... \\ d+$|^Symbol$|^Symbol_ \\ d+$ "
266- if (! (value_column %in% names(data )) & sum(grepl( symbol_grep_string ,names( data )) )> 1 ) {
267- symbols <- which(grepl( symbol_grep_string ,names( data )) )
268- dimension_grep_string <- paste0(" ^.+ \\ (" ,length(symbols )," \\ ):.+\\ [\\ d+\\ ]$" )
266+ symbols <- which(grepl( " ^Symbol( \\ d+)*$ " ,names( data )))
267+ if (! (value_column %in% names(data )) & length( symbols )> 1 ) {
268+ # message("\nTransforming to long form." )
269+ dimension_grep_string <- paste0(" ^.+ \\ (" ,length(symbols )," [A-Z]* \\ ):.+\\ [\\ d+\\ ]$" )
269270 dimensions <- which(grepl(dimension_grep_string ,names(data )))
270271 if (sum(symbols != dimensions + 1 )> 0 ) {
271272 warning(" Unable to identify dimensions" )
272273 } else {
273- dimension_members <- gsub(paste0(" ^.+ \\ (" ,length(symbols )," \\ ): *" )," " ,names(data )[dimensions ]) %> %
274+ count_type <- stringr :: str_match(names(data )[dimensions ][1 ],paste0(" (\\ (" ,length(symbols )," [A-Z]*\\ ))" ))[1 ,2 ]
275+ dimension_members <- gsub(paste0(" ^.+ \\ (" ,length(symbols )," [A-Z]*\\ ): *" )," " ,names(data )[dimensions ]) %> %
274276 gsub(" *\\ [\\ d+\\ ]$" ," " ,. )
275277 member_ids <- stringr :: str_extract(names(data )[dimensions ]," \\ [\\ d+\\ ]$" ) %> % gsub(" \\ [|\\ ]" ," " ,. )
276- dimension_name <- gsub(paste0(" \\ (" ,length(symbols )," \\ ):.+\\ [\\ d+\\ ]" )," " ,names(data )[dimensions ]) %> %
277- unique() %> % paste0(. ," ( " ,length( symbols ), " ) " )
278+ dimension_name <- gsub(paste0(" \\ (" ,length(symbols )," [A-Z]* \\ ):.+\\ [\\ d+\\ ]" )," " ,names(data )[dimensions ]) %> %
279+ unique() %> % paste0(. ," " , count_type )
278280
279281 if (length(dimension_name )> 1 ) {
280282 warning(" Unable to identify dimension name" )
281283 } else {
282- data_short <- data %> %
283- select(- c(symbols ,dimensions ))
284- data <- data_short %> %
285- dplyr :: left_join(
286- data %> %
287- dplyr :: select(- symbols ) %> %
288- tidyr :: pivot_longer(matches(dimension_grep_string ),names_to = dimension_name ,values_to = " VALUE" ) %> %
289- dplyr :: mutate(!! paste0(" Member ID: " ,dimension_name ): =
290- stringr :: str_extract(.data [[dimension_name ]]," \\ [\\ d+\\ ]$" ) %> % gsub(" \\ [|\\ ]" ," " ,. )) %> %
291- dplyr :: mutate_at(dimension_name ,function (d )
292- gsub(paste0(" ^.+ \\ (" ,length(symbols )," \\ ): *" )," " ,d ) %> %
293- gsub(" *\\ [\\ d+\\ ]$" ," " ,. )),
294- by = names(data_short ))
284+ renames <- c(setNames(names(data )[dimensions ],paste0(member_ids ," --- " ,value_column )),
285+ setNames(names(data )[symbols ],paste0(member_ids ," --- Symbol" )))
286+
287+ member_names <- dplyr :: tibble(!! as.name(paste0(" Member ID: " ,dimension_name )): = member_ids ,
288+ !! as.name(dimension_name ): = dimension_members )
289+
290+ data <- data %> %
291+ dplyr :: rename(!!! renames ) %> %
292+ tidyr :: pivot_longer(matches(" --- " ), names_pattern = " ^(.+) --- (.+)$" ,
293+ names_to = c(paste0(" Member ID: " ,dimension_name )," .value" )) %> %
294+ dplyr :: left_join(member_names ,by = paste0(" Member ID: " ,dimension_name ))
295295 if (" Coordinate" %in% names(data )) {
296296 data <- data %> %
297297 dplyr :: mutate(COORDINATE = paste0(.data $ Coordinate ," ." ,!! as.name(paste0(" Member ID: " ,dimension_name )))) %> %
298- select(- .data $ Coordinate )
298+ dplyr :: select(- .data $ Coordinate )
299299 }
300+
300301 data <- data %> %
301302 dplyr :: select(- dplyr :: all_of(paste0(" Member ID: " ,dimension_name )))
302- data_short <- NULL
303303 }
304304 }
305305 }
@@ -318,9 +318,12 @@ format_file_size <- function (x, units = "b", standard = "auto", digits = 1L, ..
318318{
319319 known_bases <- c(legacy = 1024 , IEC = 1024 , SI = 1000 )
320320 known_units <- list (SI = c(" B" , " kB" , " MB" , " GB" , " TB" , " PB" ,
321- " EB" , " ZB" , " YB" ), IEC = c(" B" , " KiB" , " MiB" , " GiB" ,
322- " TiB" , " PiB" , " EiB" , " ZiB" , " YiB" ), legacy = c(" b" , " Kb" ,
323- " Mb" , " Gb" , " Tb" , " Pb" ), LEGACY = c(" B" , " KB" , " MB" ,
321+ " EB" , " ZB" , " YB" ),
322+ IEC = c(" B" , " KiB" , " MiB" , " GiB" ,
323+ " TiB" , " PiB" , " EiB" , " ZiB" , " YiB" ),
324+ legacy = c(" b" , " Kb" ,
325+ " Mb" , " Gb" , " Tb" , " Pb" ),
326+ LEGACY = c(" B" , " KB" , " MB" ,
324327 " GB" , " TB" , " PB" ))
325328 units <- match.arg(units , c(" auto" , unique(unlist(known_units ),
326329 use.names = FALSE )))
0 commit comments