From a06177481b5aacfbec2d4d5a611cae642f2b3a7b Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 8 Oct 2025 11:13:30 +0200 Subject: [PATCH] latest release --- CITATION.cff | 2 +- DESCRIPTION | 2 +- NEWS.md | 4 + R/app_version.R | 2 +- R/create-column-mod.R | 10 +- R/datagrid-infos-mod.R | 4 +- R/hosted_version.R | 2 +- R/import_globalenv-ext.R | 8 +- R/plot_box.R | 2 +- R/plot_sankey.R | 2 +- R/plot_violin.R | 2 +- R/redcap_read_shiny_module.R | 8 +- R/regression-module.R | 76 +++++----- R/sysdata.rda | Bin 2851 -> 2779 bytes R/ui_elements.R | 5 +- SESSION.md | 23 +-- app_docker/app.R | 158 ++++++++++----------- app_docker/translations/translation_da.csv | 98 +++++++------ app_docker/translations/translation_sw.csv | 22 ++- app_docker/www/intro.html | 4 + app_docker/www/intro.md | 2 + app_docker/www/intro_da.html | 26 ++-- app_docker/www/intro_da.md | 10 +- app_docker/www/intro_sw.html | 43 +++--- app_docker/www/intro_sw.md | 16 +-- inst/apps/FreesearchR/app.R | 158 ++++++++++----------- inst/apps/FreesearchR/www/intro.html | 4 + inst/apps/FreesearchR/www/intro.md | 2 + inst/apps/FreesearchR/www/intro_da.html | 26 ++-- inst/apps/FreesearchR/www/intro_da.md | 10 +- inst/apps/FreesearchR/www/intro_sw.html | 43 +++--- inst/apps/FreesearchR/www/intro_sw.md | 16 +-- inst/translations/translation_da.csv | 100 ++++++------- inst/translations/translation_sw.csv | 2 +- man/plot_sankey_single.Rd | 2 +- 35 files changed, 459 insertions(+), 435 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 1bbe1103..cba853c9 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -8,7 +8,7 @@ message: 'To cite package "FreesearchR" in publications use:' type: software license: AGPL-3.0-or-later title: 'FreesearchR: Easy data analysis for clinicians' -version: 25.10.2 +version: 25.10.3 doi: 10.5281/zenodo.14527429 identifiers: - type: url diff --git a/DESCRIPTION b/DESCRIPTION index f593083a..fb3d3fd6 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: FreesearchR Title: Easy data analysis for clinicians -Version: 25.10.2 +Version: 25.10.3 Authors@R: c( person("Andreas Gammelgaard", "Damsbo",email="agdamsbo@clin.au.dk", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-7559-1154")), diff --git a/NEWS.md b/NEWS.md index 379064b0..a522b680 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +# FreesearchR 25.10.3 + +*NEW* Improvements to translations with more strings having been translated. Nearing completion of marking strings for translation, which means (almost) the complete interface is now translatable. + # FreesearchR 25.10.2 *NEW* Improvements to translations with more strings having been translated. diff --git a/R/app_version.R b/R/app_version.R index 6dde03ee..97c4ba3e 100644 --- a/R/app_version.R +++ b/R/app_version.R @@ -1 +1 @@ -app_version <- function()'25.10.2' +app_version <- function()'25.10.3' diff --git a/R/create-column-mod.R b/R/create-column-mod.R index 573d83fd..9627b3ac 100644 --- a/R/create-column-mod.R +++ b/R/create-column-mod.R @@ -105,7 +105,7 @@ create_column_ui <- function(id) { actionButton( inputId = ns("compute"), label = tagList( - phosphoricons::ph("gear"), i18n$t("Create column") + phosphoricons::ph("pencil"), i18n$t("Create column") ), class = "btn-outline-primary", width = "100%" @@ -113,7 +113,8 @@ create_column_ui <- function(id) { actionButton( inputId = ns("remove"), label = tagList( - phosphoricons::ph("trash") + phosphoricons::ph("x-circle"), + i18n$t("Cancel") ), class = "btn-outline-danger", width = "100%" @@ -140,9 +141,7 @@ create_column_server <- function(id, info_alert <- shinyWidgets::alert( status = "info", phosphoricons::ph("question"), - i18n$t("Choose a name for the column to be created or modified,"), - i18n$t("then enter an expression before clicking on the button above to validate or on "), - phosphoricons::ph("trash"), i18n$t("to delete it.") + i18n$t("Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything.") ) rv <- reactiveValues( @@ -244,6 +243,7 @@ list_allowed_operations <- function() { } + #' @inheritParams shiny::modalDialog #' @export #' diff --git a/R/datagrid-infos-mod.R b/R/datagrid-infos-mod.R index df9a05c9..391a4483 100644 --- a/R/datagrid-infos-mod.R +++ b/R/datagrid-infos-mod.R @@ -166,7 +166,7 @@ describe_col_factor <- function(x, with_summary = TRUE) { style = htmltools::css(fontStyle = "italic"), get_var_icon(x), # phosphoricons::ph("list-bullets"), - "factor" + class(x) ), if (with_summary) { tagList( @@ -319,7 +319,7 @@ construct_col_summary <- function(data) { values <- data[[col]] content <- if (inherits(values, "character")) { describe_col_char(values) - } else if (inherits(values, "factor")) { + } else if (inherits(values, c("factor","logical"))) { describe_col_factor(values) } else if (inherits(values, c("numeric", "integer"))) { describe_col_num(values) diff --git a/R/hosted_version.R b/R/hosted_version.R index e141329f..4ab7eee3 100644 --- a/R/hosted_version.R +++ b/R/hosted_version.R @@ -1 +1 @@ -hosted_version <- function()'v25.10.2-251007' +hosted_version <- function()'v25.10.3-251008' diff --git a/R/import_globalenv-ext.R b/R/import_globalenv-ext.R index 5368d45e..29341403 100644 --- a/R/import_globalenv-ext.R +++ b/R/import_globalenv-ext.R @@ -73,7 +73,7 @@ import_globalenv_ui <- function(id, id = ns("import-result"), status = "info", tags$b(i18n$t("No data selected!")), - i18n$t("Use a datasat from your environment or from the environment of a package."), + i18n$t("Use a dataset from your environment or from the environment of a package."), dismissible = TRUE ) ), @@ -150,7 +150,9 @@ import_globalenv_server <- function(id, selected = character(0), choices = choices, choicesOpt = choicesOpt, - options = list(title = i18n$t("List of datasets...")) + options = list( + title = i18n$t("List of datasets..."), + "live-search" = TRUE) ) }) @@ -159,7 +161,7 @@ import_globalenv_server <- function(id, id = "import-result", status = "info", tags$b(i18n$t("No data selected!")), - i18n$t("Use a datasat from your environment or from the environment of a package."), + i18n$t("Use a dataset from your environment or from the environment of a package."), dismissible = TRUE ) ) diff --git a/R/plot_box.R b/R/plot_box.R index b9a5be1b..989a112f 100644 --- a/R/plot_box.R +++ b/R/plot_box.R @@ -35,7 +35,7 @@ plot_box <- function(data, pri, sec, ter = NULL,...) { ) }) - wrap_plot_list(out,title=glue::glue("Grouped by {get_label(data,ter)}"),...) + wrap_plot_list(out,title=glue::glue(i18n$t("Grouped by {get_label(data,ter)}")),...) } diff --git a/R/plot_sankey.R b/R/plot_sankey.R index c45d46f2..41bd7624 100644 --- a/R/plot_sankey.R +++ b/R/plot_sankey.R @@ -119,7 +119,7 @@ plot_sankey <- function(data, pri, sec, ter = NULL, color.group = "pri", colors #' plot_sankey_single("first", "last", color.group = "pri") #' mtcars |> #' default_parsing() |> -#' plot_sankey_single("cyl", "vs", color.group = "pri") +#' plot_sankey_single("cyl", "vs", color.group = "pri") plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), colors = NULL, ...) { color.group <- match.arg(color.group) diff --git a/R/plot_violin.R b/R/plot_violin.R index 10ddd8ad..4695f4ab 100644 --- a/R/plot_violin.R +++ b/R/plot_violin.R @@ -26,7 +26,7 @@ plot_violin <- function(data, pri, sec, ter = NULL) { ) }) - wrap_plot_list(out, title = glue::glue("Grouped by {get_label(data,ter)}")) + wrap_plot_list(out, title = glue::glue(i18n$t("Grouped by {get_label(data,ter)}"))) }) # patchwork::wrap_plots(out,guides = "collect") } diff --git a/R/redcap_read_shiny_module.R b/R/redcap_read_shiny_module.R index 477e123c..f84dd511 100644 --- a/R/redcap_read_shiny_module.R +++ b/R/redcap_read_shiny_module.R @@ -26,12 +26,6 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { width = "100%" ), shiny::helpText(i18n$t("Format should be either 'https://redcap.your.institution/' or 'https://your.institution/redcap/'")), - # shiny::textInput( - # inputId = ns("api"), - # label = "API token", - # value = "", - # width = "100%" - # ), shiny::passwordInput( inputId = ns("api"), label = i18n$t("API token"), @@ -55,7 +49,7 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shinyWidgets::alert( id = ns("connect-result"), status = "info", - tags$p(phosphoricons::ph("info", weight = "bold"), "Please fill in server address (URI) and API token, then press 'Connect'.") + tags$p(phosphoricons::ph("info", weight = "bold"), i18n$t("Please fill in web address and API token, then press 'Connect'.")) ), dismissible = TRUE ), diff --git a/R/regression-module.R b/R/regression-module.R index 52898ce5..e1bd364f 100644 --- a/R/regression-module.R +++ b/R/regression-module.R @@ -69,18 +69,18 @@ regression_ui <- function(id, ...) { # ) # ), shiny::uiOutput(outputId = ns("regression_type")), - shiny::radioButtons( - inputId = ns("all"), - label = i18n$t("Specify covariables"), - inline = TRUE, - selected = 2, - choiceNames = c( - "Yes", - "No" - ), - choiceValues = c(1, 2) - ), - # shiny::uiOutput(outputId = ns("all")), + # shiny::radioButtons( + # inputId = ns("all"), + # label = i18n$t("Specify covariables"), + # inline = TRUE, + # selected = 2, + # choiceNames = c( + # "Yes", + # "No" + # ), + # choiceValues = c(1, 2) + # ), + shiny::uiOutput(outputId = ns("all_vars")), shiny::conditionalPanel( condition = "input.all==1", shiny::uiOutput(outputId = ns("regression_vars")), @@ -102,17 +102,7 @@ regression_ui <- function(id, ...) { ), shiny::helpText(i18n$t("Press 'Analyse' to create the regression model and after changing parameters.")), shiny::tags$br(), - shiny::radioButtons( - inputId = ns("add_regression_p"), - label = i18n$t("Show p-value"), - inline = TRUE, - selected = "yes", - choiceNames = c( - "Yes", - "No" - ), - choiceValues = c("yes", "no") - ), + shiny::uiOutput(outputId = ns("add_regression_p")), # shiny::tags$br(), # shiny::radioButtons( # inputId = ns("tbl_theme"), @@ -260,20 +250,32 @@ regression_server <- function(id, bslib::accordion_panel_update(id = "acc_checks", target = "acc_pan_checks", title = i18n$t("Checks")) }) - # shiny::observe({ - # shiny::updateRadioButtons( - # session = session, - # inputId = "all", - # label = i18n$t("Specify covariables"), - # # inline = TRUE, - # # selected = 2, - # choiceNames = c( - # i18n$t("Yes"), - # i18n$t("No") - # ), - # choiceValues = c(1, 2) - # ) - # }) + output$all_vars <- shiny::renderUI( + shiny::radioButtons( + inputId = ns("all"), + label = i18n$t("Specify covariables"), + inline = TRUE, + selected = 2, + choiceNames = c( + i18n$t("Yes"), + i18n$t("No") + ), + choiceValues = c(1, 2) + ), + ) + + output$add_regression_p <- shiny::renderUI( + shiny::radioButtons( + inputId = ns("add_regression_p"), + label = i18n$t("Show p-value"), + inline = TRUE, + selected = "yes", + choiceNames = c( + i18n$t("Yes"), + i18n$t("No") + ), + choiceValues = c("yes", "no") + )) diff --git a/R/sysdata.rda b/R/sysdata.rda index 5b25ea88076b7ba4ee7653c126bce0b36f504bce..7dc76abdde705322e20afda79120ab26f35899b7 100644 GIT binary patch literal 2779 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 literal 2851 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 #' default_parsing() |> -#' plot_sankey_single("cyl", "vs", color.group = "pri") +#' plot_sankey_single("cyl", "vs", color.group = "pri") plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), colors = NULL, ...) { color.group <- match.arg(color.group) @@ -5969,7 +5971,7 @@ plot_violin <- function(data, pri, sec, ter = NULL) { ) }) - wrap_plot_list(out, title = glue::glue("Grouped by {get_label(data,ter)}")) + wrap_plot_list(out, title = glue::glue(i18n$t("Grouped by {get_label(data,ter)}"))) }) # patchwork::wrap_plots(out,guides = "collect") } @@ -6088,12 +6090,6 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { width = "100%" ), shiny::helpText(i18n$t("Format should be either 'https://redcap.your.institution/' or 'https://your.institution/redcap/'")), - # shiny::textInput( - # inputId = ns("api"), - # label = "API token", - # value = "", - # width = "100%" - # ), shiny::passwordInput( inputId = ns("api"), label = i18n$t("API token"), @@ -6117,7 +6113,7 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shinyWidgets::alert( id = ns("connect-result"), status = "info", - tags$p(phosphoricons::ph("info", weight = "bold"), "Please fill in server address (URI) and API token, then press 'Connect'.") + tags$p(phosphoricons::ph("info", weight = "bold"), i18n$t("Please fill in web address and API token, then press 'Connect'.")) ), dismissible = TRUE ), @@ -7794,18 +7790,18 @@ regression_ui <- function(id, ...) { # ) # ), shiny::uiOutput(outputId = ns("regression_type")), - shiny::radioButtons( - inputId = ns("all"), - label = i18n$t("Specify covariables"), - inline = TRUE, - selected = 2, - choiceNames = c( - "Yes", - "No" - ), - choiceValues = c(1, 2) - ), - # shiny::uiOutput(outputId = ns("all")), + # shiny::radioButtons( + # inputId = ns("all"), + # label = i18n$t("Specify covariables"), + # inline = TRUE, + # selected = 2, + # choiceNames = c( + # "Yes", + # "No" + # ), + # choiceValues = c(1, 2) + # ), + shiny::uiOutput(outputId = ns("all_vars")), shiny::conditionalPanel( condition = "input.all==1", shiny::uiOutput(outputId = ns("regression_vars")), @@ -7827,17 +7823,7 @@ regression_ui <- function(id, ...) { ), shiny::helpText(i18n$t("Press 'Analyse' to create the regression model and after changing parameters.")), shiny::tags$br(), - shiny::radioButtons( - inputId = ns("add_regression_p"), - label = i18n$t("Show p-value"), - inline = TRUE, - selected = "yes", - choiceNames = c( - "Yes", - "No" - ), - choiceValues = c("yes", "no") - ), + shiny::uiOutput(outputId = ns("add_regression_p")), # shiny::tags$br(), # shiny::radioButtons( # inputId = ns("tbl_theme"), @@ -7985,20 +7971,32 @@ regression_server <- function(id, bslib::accordion_panel_update(id = "acc_checks", target = "acc_pan_checks", title = i18n$t("Checks")) }) - # shiny::observe({ - # shiny::updateRadioButtons( - # session = session, - # inputId = "all", - # label = i18n$t("Specify covariables"), - # # inline = TRUE, - # # selected = 2, - # choiceNames = c( - # i18n$t("Yes"), - # i18n$t("No") - # ), - # choiceValues = c(1, 2) - # ) - # }) + output$all_vars <- shiny::renderUI( + shiny::radioButtons( + inputId = ns("all"), + label = i18n$t("Specify covariables"), + inline = TRUE, + selected = 2, + choiceNames = c( + i18n$t("Yes"), + i18n$t("No") + ), + choiceValues = c(1, 2) + ), + ) + + output$add_regression_p <- shiny::renderUI( + shiny::radioButtons( + inputId = ns("add_regression_p"), + label = i18n$t("Show p-value"), + inline = TRUE, + selected = "yes", + choiceNames = c( + i18n$t("Yes"), + i18n$t("No") + ), + choiceValues = c("yes", "no") + )) @@ -8796,7 +8794,7 @@ ui_elements <- function(selection) { import_globalenv_ui( id = "env", title = NULL, - packages = c("NHANES", "stRoke") + packages = c("NHANES", "stRoke", "datasets") ) ), # shiny::conditionalPanel( @@ -9027,6 +9025,7 @@ ui_elements <- function(selection) { ), shiny::tags$br(), shiny::helpText(i18n$t("Reset to original imported dataset. Careful! There is no un-doing.")), + shiny::tags$br(), shiny::tags$br() ) # ) @@ -9139,7 +9138,7 @@ ui_elements <- function(selection) { title = "Settings", icon = bsicons::bs_icon("x-circle"), shiny::uiOutput("missings_var"), - shiny::helpText(i18n$t("To consider if data is missing by random, choose the outcome/dependent variable, if it has any missings to evaluate if there is a significant difference across other variables depending on missing data or not.")) + shiny::helpText(i18n$t("To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random.")) ) ) ), @@ -11459,7 +11458,8 @@ ui <- bslib::page_fixed( #### Current file: /Users/au301842/FreesearchR/app/server.R ######## -data(mtcars) +data("mtcars") +data("iris") # trial <- gtsummary::trial # starwars <- dplyr::starwars @@ -11739,7 +11739,7 @@ server <- function(input, output, session) { ) }, error = function(err) { - showNotification(paste0("We encountered the following error showing missingness: ", err), type = "err") + showNotification(paste(i18n$t("We encountered the following error showing missingness:"), err), type = "err") } ) }) @@ -12176,7 +12176,7 @@ server <- function(input, output, session) { show_data(REDCapCAST::fct_drop(rv$data_filtered), title = i18n$t("Uploaded data overview"), type = "modal") }, error = function(err) { - showNotification(paste0("We encountered the following error browsing your data: ", err), type = "err") + showNotification(paste(i18n$t("We encountered the following error browsing your data:"), err), type = "err") } ) }) @@ -12200,7 +12200,7 @@ server <- function(input, output, session) { ) }, error = function(err) { - showNotification(paste0("We encountered the following error showing missingness: ", err), type = "err") + showNotification(paste(i18n$t("We encountered the following error showing missingness:"), err), type = "err") } ) }) @@ -12247,12 +12247,12 @@ server <- function(input, output, session) { output$code_import <- shiny::renderUI({ shiny::req(rv$code$import) - prismCodeBlock(paste0(i18n$t("#Data import\n"), rv$code$import)) + prismCodeBlock(paste0("#", i18n$t("Data import"), "\n", rv$code$import)) }) output$code_format <- shiny::renderUI({ shiny::req(rv$code$format) - prismCodeBlock(paste0(i18n$t("#Data import formatting\n"), rv$code$format)) + prismCodeBlock(paste0("#", i18n$t("Data import formatting"), "\n", rv$code$format)) }) output$code_data <- shiny::renderUI({ @@ -12270,23 +12270,23 @@ server <- function(input, output, session) { pipe_string() |> expression_string(assign.str = "df <- df |>\n") - prismCodeBlock(paste0("#Data modifications\n", out)) + prismCodeBlock(paste0("#", i18n$t("Data modifications"), "\n", out)) }) output$code_variables <- shiny::renderUI({ shiny::req(rv$code$variables) out <- expression_string(rv$code$variables, assign.str = "df <- df |>\n") - prismCodeBlock(paste0("#Variables filter\n", out)) + prismCodeBlock(paste0("#", i18n$t("Variables filter"), "\n", out)) }) output$code_filter <- shiny::renderUI({ shiny::req(rv$code$filter) - prismCodeBlock(paste0("#Data filter\n", rv$code$filter)) + prismCodeBlock(paste0("#", i18n$t("Data filter"), "\n", rv$code$filter)) }) output$code_table1 <- shiny::renderUI({ shiny::req(rv$code$table1) - prismCodeBlock(paste0("#Data characteristics table\n", rv$code$table1)) + prismCodeBlock(paste0("#", i18n$t("Data characteristics table"), "\n", rv$code$table1)) }) @@ -12330,7 +12330,7 @@ server <- function(input, output, session) { output$data_info_nochar <- shiny::renderUI({ shiny::req(rv$list$data) - data_description(rv$list$data, data_text = "The dataset without text variables") + data_description(rv$list$data, data_text = i18n$t("The dataset without text variables")) }) ## Only allow evaluation if the dataset has fewer then 50 variables @@ -12369,9 +12369,9 @@ server <- function(input, output, session) { # # stop(glue::glue(i18n$t("The data includes {n_col} variables. Please limit to 100."))) # print("Please limit to 100.") # } else { - shiny::withProgress(message = "Creating the table. Hold on for a moment..", { - rv$list$table1 <- rlang::exec(create_baseline, !!!append_list(rv$list$data, parameters, "data")) - }) + shiny::withProgress(message = i18n$t("Creating the table. Hold on for a moment.."), { + rv$list$table1 <- rlang::exec(create_baseline, !!!append_list(rv$list$data, parameters, "data")) + }) # } # }, # error = function(err) { @@ -12399,7 +12399,7 @@ server <- function(input, output, session) { inputId = "outcome_var_cor", selected = "none", data = rv$list$data, - label = "Select outcome variable", + label = i18n$t("Select outcome variable"), col_subset = c( "none", colnames(rv$list$data) @@ -12425,7 +12425,7 @@ server <- function(input, output, session) { output$missings_var <- shiny::renderUI({ columnSelectInput( inputId = "missings_var", - label = "Select variable to stratify analysis", + label = i18n$t("Select variable to stratify analysis"), data = shiny::reactive({ shiny::req(rv$data_filtered) rv$data_filtered[apply(rv$data_filtered, 2, anyNA)] @@ -12523,7 +12523,7 @@ server <- function(input, output, session) { rv$list$regression <- rv$regression() rv$list$missings <- rv$missings() - shiny::withProgress(message = "Generating the report. Hold on for a moment..", { + shiny::withProgress(message = i18n$t("Generating the report. Hold on for a moment.."), { tryCatch( { rv$list |> diff --git a/app_docker/translations/translation_da.csv b/app_docker/translations/translation_da.csv index 2d9b39b2..fde79a3e 100644 --- a/app_docker/translations/translation_da.csv +++ b/app_docker/translations/translation_da.csv @@ -44,9 +44,6 @@ "Enter an expression to define new column:","Indtast udregningen til at definere en ny variabel:" "Click on a column name to add it to the expression:","Tryk på et variabel navn for at tilføje det til udregningen:" "Create column","Opret variabel" -"Choose a name for the column to be created or modified,","Vælg et navn til den ændrede eller nye variabel," -"then enter an expression before clicking on the button above to validate or on","indtast herefter udregningen før du trykker på knappen ovenfor for at validere eller på" -"to delete it.","for at slette den." "New column name cannot be empty","Det nye variabelnavn kan ikke være tomt" "Create a new column","Opret ny variabel" "Some operations are not allowed","Nogle beregninger er ikke tilladte" @@ -171,7 +168,6 @@ "Correlation cut-off","Korrelationsgrænse" "Set the cut-off for considered 'highly correlated'.","Angiv grænsen for. hvad, der tolkes som 'betydelig korrelation'." "Missings","Manglende observationer" -"To consider if data is missing by random, choose the outcome/dependent variable, if it has any missings to evaluate if there is a significant difference across other variables depending on missing data or not.","To consider if data is missing by random, choose the outcome/dependent variable, if it has any missings to evaluate if there is a significant difference across other variables depending on missing data or not." "Class","Klasse" "Observations","Observationer" "Data classes and missing observations","Dataklasser og manglende observationer" @@ -180,13 +176,11 @@ "Confirm","Bekræft" "The filtered data","Filtreret data" "Create new factor","Ny kategorisk variabel" -"This window is aimed at advanced users and require some *R*-experience!","This window is aimed at advanced users and require some *R*-experience!" -"Create new variables","Opret ny variabel" +"This window is aimed at advanced users and require some *R*-experience!","Dette vindue er primært for avancerede brugere med nogen *R*-erfaring!" +"Create new variables","Opret nye variabler" "Select data types to include","Vælg datatyper, der skal inkluderes" "Uploaded data overview","Overblik over uploaded data" -"Here is an overview of how your data is interpreted, and where data is missing. Use this information to consider if data is missing at random or if some observations are missing systematically wich may be caused by an observation bias.","Here is an overview of how your data is interpreted, and where data is missing. Use this information to consider if data is missing at random or if some observations are missing systematically wich may be caused by an observation bias." -"#Data import\n","#Data import\n" -"#Data import formatting\n","#Formatering ved data-import\n" +"Here is an overview of how your data is interpreted, and where data is missing. Use this information to consider if data is missing at random or if some observations are missing systematically wich may be caused by an observation bias.","Her har du en oversigt over hvordan data er blevet formateret, og hvor der er manglende observationer. Brug informationen til at overveje om manglende data mangler tilfældigt eller og der er et mønster, som kan være et udtryk for systematisk manglende data (observationsbias)." "Specify covariables","Angiv kovariabler" "If none are selected, all are included.","Hvis ingen er valgt inkluderes alle." "Analyse","Analysér" @@ -197,53 +191,67 @@ "Please confirm data reset!","Bekræft gendannelse af data!" "Import data from REDCap","Importér data fra REDCap" "REDCap server","REDCap-server" -"Web address","Web address" +"Web address","Serveradresse" "Format should be either 'https://redcap.your.institution/' or 'https://your.institution/redcap/'","Adressen skal være som 'https://redcap.your.institution/' eller 'https://your.institution/redcap/'" -"API token","API token" +"API token","API-nøgle" "The token is a string of 32 numbers and letters.","En API-nøgle består af ialt 32 tal og bogstaver." "Connect","Forbind" "Data import parameters","Data import parameters" -"Select fields/variables to import and click the funnel to apply optional filters","Select fields/variables to import and click the funnel to apply optional filters" +"Select fields/variables to import and click the funnel to apply optional filters","Vælg variabler, der skal importeres og tryk på tragten for at anvende valgfrie filtre" "Import","Import" -"Click to see data dictionary","Click to see data dictionary" -"Connected to server!","Connected to server!" -"The {data_rv$info$project_title} project is loaded.","The {data_rv$info$project_title} project is loaded." +"Click to see data dictionary","Tryk for at se metadata (Data Dictionary)" +"Connected to server!","Forbindelse til serveren oprettet!" +"The {data_rv$info$project_title} project is loaded.","{data_rv$info$project_title}-projektet er forbundet." "Data dictionary","Data dictionary" -"Preview:","Preview:" -"Imported data set","Imported data set" -"Select fields/variables to import:","Select fields/variables to import:" -"Specify the data format","Specify the data format" -"Fill missing values?","Fill missing values?" -"Requested data was retrieved!","Requested data was retrieved!" -"Data retrieved, but it looks like only the ID was retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access.","Data retrieved, but it looks like only the ID was retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access." -"Data retrieved, but it looks like not all requested fields were retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access.","Data retrieved, but it looks like not all requested fields were retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access." -"Click to see the imported data","Click to see the imported data" -"Regression table","Regression table" -"Import a dataset from an environment","Import a dataset from an environment" +"Preview:","Forsmag:" +"Imported data set","Importeret datasæt" +"Select fields/variables to import:","Vælg variabler, der skal importeres:" +"Specify the data format","Specificér dataformatet" +"Fill missing values?","Skal manglende observationer udfyldes?" +"Requested data was retrieved!","Det udvalgte data blev hentet!" +"Data retrieved, but it looks like only the ID was retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access.","Data er hentet, men det ser ud til kun at indeholde ID-variablen. Du skal kontakte din REDCap-administrator og sikre dig at du har adgang til faktisk at hente de udvalgte data." +"Data retrieved, but it looks like not all requested fields were retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access.","Data er hentet, men det ser ud til kun at indeholde nogle af de udvalgte variabler. Du skal kontakte din REDCap-administrator og sikre dig at du har adgang til faktisk at hente de udvalgte data." +"Click to see the imported data","Tryk for at se de importerede data" +"Regression table","Regressionstabel" +"Import a dataset from an environment","Importer et datasæt fra et kodemiljø" "Select a dataset:","Vælg datasæt:" -"List of datasets...","List of datasets..." +"List of datasets...","Liste af datasæt..." "No data selected!","Ingen data valgt!" -"Use a datasat from your environment or from the environment of a package.","Use a datasat from your environment or from the environment of a package." "No dataset here...","Ingen datasæt her..." -"Use a dataset from your environment or from the environment of a package.","Use a dataset from your environment or from the environment of a package." +"Use a dataset from your environment or from the environment of a package.","Brug et datasæt fra dit lokale kodemiljø eller fra en tilgængelig pakke." "Not a data.frame","Ikke en data.frame" "Select source","Vælg datakilde" "Select a data source:","Vælg datakilde:" "Yes","Ja" "No","Nej" -"Coefficient plot","Coefficient plot" -"Select outcome variable","Select outcome variable" -"Choose regression analysis","Choose regression analysis" -"Covariables to format as categorical","Covariables to format as categorical" -"Select variable to stratify baseline","Select variable to stratify baseline" -"Select models to plot","Select models to plot" -"Creating regression models failed with the following error:","Creating regression models failed with the following error:" -"Creating a regression table failed with the following error:","Creating a regression table failed with the following error:" -"Saving the plot. Hold on for a moment..","Saving the plot. Hold on for a moment.." -"Running model assumptions checks failed with the following error:","Running model assumptions checks failed with the following error:" -"Select checks to plot","Select checks to plot" -"Multivariable regression model checks","Multivariable regression model checks" -"Grouped by {get_label(data,ter)}","Grouped by {get_label(data,ter)}" -"Option to perform statistical comparisons between strata in baseline table.","Option to perform statistical comparisons between strata in baseline table." -"Press 'Evaluate' to create the comparison table.","Press 'Evaluate' to create the comparison table." -"The data includes {n_col} variables. Please limit to 100.","The data includes {n_col} variables. Please limit to 100." +"Coefficient plot","Koefficientplot" +"Select outcome variable","Vælg svarvariablen" +"Choose regression analysis","Vælg regressionsanalysen" +"Covariables to format as categorical","Kovariabler, der skal omklassificeres som kategoriske" +"Select variable to stratify baseline","Vælg variabel til a stratificere tabellen" +"Select models to plot","Vælg de modeller, der skal visualiseres" +"Creating regression models failed with the following error:","Oprettelsen af en regressionsmodel fejlede med den følgende besked:" +"Creating a regression table failed with the following error:","Oprettelsen af en regressionstabel fejlede med den følgende besked:" +"Saving the plot. Hold on for a moment..","Gemmer grafikken. Vent et øjeblik.." +"Running model assumptions checks failed with the following error:","Tjek af antagelser for regressionsmodellen fejlede med den følgende besked:" +"Select checks to plot","Vælg modeltests, der skal visualiseres" +"Multivariable regression model checks","Tests af multivariabel regressionsmodel" +"Grouped by {get_label(data,ter)}","Grupperet efter {get_label(data,ter)}" +"Option to perform statistical comparisons between strata in baseline table.","Mulighed for at udføre statistiske tests mellem strata i oversigtstabellen." +"Press 'Evaluate' to create the comparison table.","Tryk 'Evaluér' for at oprette en oversigtstabel." +"The data includes {n_col} variables. Please limit to 100.","Data indeholder {n_col} variabler. Begræns venligst til 100." +"Data import","Data import" +"Data import formatting","Formatering af data ved import" +"Data modifications","Ændringer af data" +"Variables filter","Variables filter" +"Data filter","Data filter" +"Data characteristics table","Oversigtstabel" +"The dataset without text variables","Datasættet uden variabler formateret som tekst" +"Creating the table. Hold on for a moment..","Opretter tabellen. Vent et øjeblik.." +"Select variable to stratify analysis","Vælg variabler til at stratificere analysen" +"Generating the report. Hold on for a moment..","Opretter rapporten. Vent et øjeblik.." +"We encountered the following error showing missingness:","Under analysen af manglende observationer opstod følgende fejl:" +"We encountered the following error browsing your data:","I forsøget på at vise en dataoversigt opstod følgende fejl:" +"To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random.","Vælg svarvariablen, for at få hjælp til at vurdere om manglende observationer manglende tilfældigt eller ej (kun variabler med manglende data kan vælges). Hvis der er statistisk signifikant forskel mellem nogle af de øvrige variabler i forhold til manglende data i den valgte variable kan det være et udtryk for at data ikke mangler tilfældigt." +"Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything.","Vælg et navn til den nye variabel, skriv din formel og tryk så på knappen for at gemme variablen, eller annuler for at lukke uden at gemme." +"Please fill in web address and API token, then press 'Connect'.","Udfyld serveradresse og API-nøgle, og tryk så 'Fobind'." diff --git a/app_docker/translations/translation_sw.csv b/app_docker/translations/translation_sw.csv index aa1a4716..5fdf42b2 100644 --- a/app_docker/translations/translation_sw.csv +++ b/app_docker/translations/translation_sw.csv @@ -44,9 +44,6 @@ "Enter an expression to define new column:","Enter an expression to define new column:" "Click on a column name to add it to the expression:","Click on a column name to add it to the expression:" "Create column","Create column" -"Choose a name for the column to be created or modified,","Choose a name for the column to be created or modified," -"then enter an expression before clicking on the button above to validate or on","then enter an expression before clicking on the button above to validate or on" -"to delete it.","to delete it." "New column name cannot be empty","New column name cannot be empty" "Create a new column","Create a new column" "Some operations are not allowed","Some operations are not allowed" @@ -171,7 +168,6 @@ "Correlation cut-off","Correlation cut-off" "Set the cut-off for considered 'highly correlated'.","Set the cut-off for considered 'highly correlated'." "Missings","Missings" -"To consider if data is missing by random, choose the outcome/dependent variable, if it has any missings to evaluate if there is a significant difference across other variables depending on missing data or not.","To consider if data is missing by random, choose the outcome/dependent variable, if it has any missings to evaluate if there is a significant difference across other variables depending on missing data or not." "Class","Class" "Observations","Observations" "Data classes and missing observations","Data classes and missing observations" @@ -185,8 +181,6 @@ "Select data types to include","Select data types to include" "Uploaded data overview","Uploaded data overview" "Here is an overview of how your data is interpreted, and where data is missing. Use this information to consider if data is missing at random or if some observations are missing systematically wich may be caused by an observation bias.","Here is an overview of how your data is interpreted, and where data is missing. Use this information to consider if data is missing at random or if some observations are missing systematically wich may be caused by an observation bias." -"#Data import\n","#Data import\n" -"#Data import formatting\n","#Data import formatting\n" "Specify covariables","Specify covariables" "If none are selected, all are included.","If none are selected, all are included." "Analyse","Analyse" @@ -223,7 +217,6 @@ "Select a dataset:","Select a dataset:" "List of datasets...","List of datasets..." "No data selected!","No data selected!" -"Use a datasat from your environment or from the environment of a package.","Use a datasat from your environment or from the environment of a package." "No dataset here...","No dataset here..." "Use a dataset from your environment or from the environment of a package.","Use a dataset from your environment or from the environment of a package." "Not a data.frame","Not a data.frame" @@ -247,3 +240,18 @@ "Option to perform statistical comparisons between strata in baseline table.","Option to perform statistical comparisons between strata in baseline table." "Press 'Evaluate' to create the comparison table.","Press 'Evaluate' to create the comparison table." "The data includes {n_col} variables. Please limit to 100.","The data includes {n_col} variables. Please limit to 100." +"Data import","Data import" +"Data import formatting","Data import formatting" +"Data modifications","Data modifications" +"Variables filter","Variables filter" +"Data filter","Data filter" +"Data characteristics table","Data characteristics table" +"The dataset without text variables","The dataset without text variables" +"Creating the table. Hold on for a moment..","Creating the table. Hold on for a moment.." +"Select variable to stratify analysis","Select variable to stratify analysis" +"Generating the report. Hold on for a moment..","Generating the report. Hold on for a moment.." +"We encountered the following error showing missingness:","We encountered the following error showing missingness:" +"We encountered the following error browsing your data:","We encountered the following error browsing your data:" +"To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random.","To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random." +"Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything.","Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything." +"Please fill in web address and API token, then press 'Connect'.","Please fill in web address and API token, then press 'Connect'." diff --git a/app_docker/www/intro.html b/app_docker/www/intro.html index 15f9f571..6c2f1e96 100644 --- a/app_docker/www/intro.html +++ b/app_docker/www/intro.html @@ -8,6 +8,10 @@ a free tool for basic data evaluation and analysis. If you need more advanced tools, start with FreesearchR and then you’ll probably be better off using R or similar directly.

+

The FreesearchR app should be available to +as many people as possible, and the interface can be translated to any +language. If you have suggestions or want to help translate, please +reach out on info@freesearchr.org.

With this tool you can:

  1. Import data from a spreadsheet/file on your diff --git a/app_docker/www/intro.md b/app_docker/www/intro.md index 69bea66d..c7e44312 100644 --- a/app_docker/www/intro.md +++ b/app_docker/www/intro.md @@ -6,6 +6,8 @@ output: html_fragment This is the ***FreesearchR*** data analysis tool, a free tool for basic data evaluation and analysis. If you need more advanced tools, start with ***FreesearchR*** and then you'll probably be better off using *R* or similar directly. +The ***FreesearchR*** app should be available to as many people as possible, and the interface can be translated to any language. If you have suggestions or want to help translate, please reach out on [info@freesearchr.org](mailto:info@freesearchr.org). + With this tool you can: 1. **Import data** from a spreadsheet/file on your machine, directly from a [REDCap](https://projectredcap.org/ "Read more on the data capture tool REDCap") server, try it with sample data or access data directly [if run in R locally](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Read about running FreesearchR on your local machine") diff --git a/app_docker/www/intro_da.html b/app_docker/www/intro_da.html index e372d960..335b2551 100644 --- a/app_docker/www/intro_da.html +++ b/app_docker/www/intro_da.html @@ -20,18 +20,18 @@ eksempel-data eller tilgå data direkte missing observations

  2. -
  3. Visualise data by creating simple, clean plots for -overview and quick insights

  4. -
  5. Create simple regression models for even more -advanced data analyses

  6. -
  7. Download results as a report, get the modified -data set and save the code for learning and to reproduce the results -later

  8. +
  9. Evaluer data ved hjælp af beskrivende +analysemetoder og inspicer krydskorrelationer samt manglende observationer

  10. +
  11. Visualiser data ved at oprette enkle, rene plots for +overblik og hurtig indsigt

  12. +
  13. Opret simple regressionsmodeller til endnu mere +avancerede dataanalyser

  14. +
  15. Download resultater som en rapport, hent det +ændrede datasæt og gem koden til læring og til senere reproduktion af +resultaterne

-

The full project -documentation is here where you’ll find detailed descriptions of the -app and link to the source code! If you want to share feedback, -please follow this link to a simple survey.

+

Den fulde projektdokumentation er +her, hvor du finder detaljerede beskrivelser af appen og et link til +kildekoden! Hvis du vil dele feedback, +kan du følge dette link til et enkelt spørgeskema.

diff --git a/app_docker/www/intro_da.md b/app_docker/www/intro_da.md index 4a0afe5d..41c94501 100644 --- a/app_docker/www/intro_da.md +++ b/app_docker/www/intro_da.md @@ -14,12 +14,12 @@ Herunder kan du helt kort se, hvad du kan bruge ***FreesearchR*** til: 2. **Forbered** data til analys ved at filtrere, ændre variabler eller opret helt nye variabler -3. **Evaluate data** using descriptive analyses methods and inspect cross-correlations as well as [missing observations](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Read more about missing data") +3. **Evaluer data** ved hjælp af beskrivende analysemetoder og inspicer krydskorrelationer samt [manglende observationer](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Læs mere om manglende data") -4. **Visualise data** by [creating simple, clean plots](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "See available plot types") for overview and quick insights +4. **Visualiser data** ved at [oprette enkle, rene plots](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "Se tilgængelige plottyper") for overblik og hurtig indsigt -5. **Create simple regression models** for even more advanced data analyses +5. **Opret simple regressionsmodeller** til endnu mere avancerede dataanalyser -6. **Download** results as a report, get the modified data set and save the code for learning and to reproduce the results later +6. **Download** resultater som en rapport, hent det ændrede datasæt og gem koden til læring og til senere reproduktion af resultaterne -The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) where you'll find detailed descriptions of the app and link to the source code! If you want to [share feedback, please follow this link to a simple survey](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8). +Den fulde [projektdokumentation er her](https://agdamsbo.github.io/FreesearchR/), hvor du finder detaljerede beskrivelser af appen og et link til kildekoden! Hvis du vil [dele feedback, kan du følge dette link til et enkelt spørgeskema](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8). diff --git a/app_docker/www/intro_sw.html b/app_docker/www/intro_sw.html index 40da6fd4..cd24b148 100644 --- a/app_docker/www/intro_sw.html +++ b/app_docker/www/intro_sw.html @@ -1,8 +1,9 @@ -
-

Karibu

+
+

Karibu sana! +

Hii ni FreesearchR zana ya kuchanganua data, zana isiyolipishwa ya kutathmini na kuchanganua data msingi. Iwapo unahitaji zana za kina zaidi, anza na @@ -12,24 +13,24 @@ kutumia R au sawa moja kwa moja.

ungependa kuchangia, tafadhali wasiliana na info@freesearchr.org.

Na FreesearchR unaweza:

    -
  1. Import data from a spreadsheet/file on your -machine, directly from a REDCap server, try -it with sample data or access data directly if run in R -locally

  2. -
  3. Prepare data for analysis by filtering data, -modifying variables or create new variables

  4. -
  5. Evaluate data using descriptive analyses methods -and inspect cross-correlations as well as missing observations

  6. -
  7. Visualise data by creating simple, clean plots for -overview and quick insights

  8. -
  9. Create simple regression models for even more -advanced data analyses

  10. -
  11. Download results as a report, get the modified -data set and save the code for learning and to reproduce the results -later

  12. +
  13. Ingiza data kutoka kwa lahajedwali/faili kwenye +mashine yako, moja kwa moja kutoka kwa seva ya REDCap, +ijaribu kwa sampuli ya data au ufikie data moja kwa moja ikiwa +inaendeshwa katika R ndani ya nchi

  14. +
  15. Andaa data kwa uchanganuzi kwa kuchuja data, +kurekebisha vigeu au kuunda vigeu vipya

  16. +
  17. Tathmini data kwa kutumia mbinu za uchanganuzi +wa maelezo na ukague miunganisho mtambuka pamoja na maoni yanayokosekana

  18. +
  19. Onyesha data kwa kuunda viwanja rahisi na +safi kwa muhtasari na maarifa ya haraka

  20. +
  21. Unda miundo rahisi ya kurejesha kumbukumbu kwa +uchanganuzi wa hali ya juu zaidi wa data

  22. +
  23. Pakua matokeo kama ripoti, pata seti ya data +iliyorekebishwa na uhifadhi msimbo wa kujifunza na kutoa matokeo +baadaye

-

The full project -documentation is here where you’ll find detailed descriptions of the -app and link to the source code! If you want to share feedback, -please follow this link to a simple survey.

+

Hati kamili za +mradi ziko hapa ambapo utapata maelezo ya kina ya programu na kiungo +cha msimbo wa chanzo! Iwapo ungependa kushiriki maoni, +tafadhali fuata kiungo hiki cha utafiti rahisi.

diff --git a/app_docker/www/intro_sw.md b/app_docker/www/intro_sw.md index 06a8bea3..deb5d593 100644 --- a/app_docker/www/intro_sw.md +++ b/app_docker/www/intro_sw.md @@ -2,7 +2,7 @@ output: html_fragment --- -# Karibu +# Karibu sana! Hii ni ***FreesearchR*** zana ya kuchanganua data, zana isiyolipishwa ya kutathmini na kuchanganua data msingi. Iwapo unahitaji zana za kina zaidi, anza na ***FreesearchR*** na basi pengine utakuwa bora kutumia *R* au sawa moja kwa moja. @@ -10,16 +10,16 @@ Tunajitahidi kutambulisha tafsiri kamili kwa Kiswahili. Ikiwa ungependa kuchangi Na ***FreesearchR*** unaweza: -1. **Import data** from a spreadsheet/file on your machine, directly from a [REDCap](https://projectredcap.org/ "Read more on the data capture tool REDCap") server, try it with sample data or access data directly [if run in R locally](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Read about running FreesearchR on your local machine") +1. **Ingiza data** kutoka kwa lahajedwali/faili kwenye mashine yako, moja kwa moja kutoka kwa seva ya [REDCap](https://projectredcap.org/ "Soma zaidi kuhusu zana ya kunasa data ya REDCap"), ijaribu kwa sampuli ya data au ufikie data moja kwa moja [ikiwa inaendeshwa katika R ndani ya nchi](https://agdamsbo.github.io/Freesearchourcal-R/-#ownon-run-your-ruwnon-" FreesearchR kwenye mashine yako ya karibu") -2. **Prepare** data for analysis by filtering data, modifying variables or create new variables +2. **Andaa** data kwa uchanganuzi kwa kuchuja data, kurekebisha vigeu au kuunda vigeu vipya -3. **Evaluate data** using descriptive analyses methods and inspect cross-correlations as well as [missing observations](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Read more about missing data") +3. **Tathmini data** kwa kutumia mbinu za uchanganuzi wa maelezo na ukague miunganisho mtambuka pamoja na [maoni yanayokosekana](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Soma zaidi kuhusu kukosa data") -4. **Visualise data** by [creating simple, clean plots](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "See available plot types") for overview and quick insights +4. **Onyesha data** kwa [kuunda viwanja rahisi na safi](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "Angalia aina zinazopatikana za viwanja") kwa muhtasari na maarifa ya haraka -5. **Create simple regression models** for even more advanced data analyses +5. **Unda miundo rahisi ya kurejesha kumbukumbu** kwa uchanganuzi wa hali ya juu zaidi wa data -6. **Download** results as a report, get the modified data set and save the code for learning and to reproduce the results later +6. **Pakua** matokeo kama ripoti, pata seti ya data iliyorekebishwa na uhifadhi msimbo wa kujifunza na kutoa matokeo baadaye -The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) where you'll find detailed descriptions of the app and link to the source code! If you want to [share feedback, please follow this link to a simple survey](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8). +[Hati kamili za mradi ziko hapa](https://agdamsbo.github.io/FreesearchR/) ambapo utapata maelezo ya kina ya programu na kiungo cha msimbo wa chanzo! Iwapo ungependa [kushiriki maoni, tafadhali fuata kiungo hiki cha utafiti rahisi](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8). diff --git a/inst/apps/FreesearchR/app.R b/inst/apps/FreesearchR/app.R index a5b7d24e..17414cde 100644 --- a/inst/apps/FreesearchR/app.R +++ b/inst/apps/FreesearchR/app.R @@ -1,7 +1,7 @@ ######## -#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmprKaNhO/file2c953618a132.R +#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpQghyAd/file101dc71002b73.R ######## i18n_path <- system.file("translations", package = "FreesearchR") @@ -62,7 +62,7 @@ i18n$set_translation_language("en") #### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'25.10.2' +app_version <- function()'25.10.3' ######## @@ -500,7 +500,7 @@ create_column_ui <- function(id) { actionButton( inputId = ns("compute"), label = tagList( - phosphoricons::ph("gear"), i18n$t("Create column") + phosphoricons::ph("pencil"), i18n$t("Create column") ), class = "btn-outline-primary", width = "100%" @@ -508,7 +508,8 @@ create_column_ui <- function(id) { actionButton( inputId = ns("remove"), label = tagList( - phosphoricons::ph("trash") + phosphoricons::ph("x-circle"), + i18n$t("Cancel") ), class = "btn-outline-danger", width = "100%" @@ -535,9 +536,7 @@ create_column_server <- function(id, info_alert <- shinyWidgets::alert( status = "info", phosphoricons::ph("question"), - i18n$t("Choose a name for the column to be created or modified,"), - i18n$t("then enter an expression before clicking on the button above to validate or on "), - phosphoricons::ph("trash"), i18n$t("to delete it.") + i18n$t("Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything.") ) rv <- reactiveValues( @@ -639,6 +638,7 @@ list_allowed_operations <- function() { } + #' @inheritParams shiny::modalDialog #' @export #' @@ -3093,7 +3093,7 @@ describe_col_factor <- function(x, with_summary = TRUE) { style = htmltools::css(fontStyle = "italic"), get_var_icon(x), # phosphoricons::ph("list-bullets"), - "factor" + class(x) ), if (with_summary) { tagList( @@ -3246,7 +3246,7 @@ construct_col_summary <- function(data) { values <- data[[col]] content <- if (inherits(values, "character")) { describe_col_char(values) - } else if (inherits(values, "factor")) { + } else if (inherits(values, c("factor","logical"))) { describe_col_factor(values) } else if (inherits(values, c("numeric", "integer"))) { describe_col_num(values) @@ -4035,7 +4035,7 @@ data_types <- function() { #### Current file: /Users/au301842/FreesearchR/R//hosted_version.R ######## -hosted_version <- function()'v25.10.2-251007' +hosted_version <- function()'v25.10.3-251008' ######## @@ -4133,7 +4133,7 @@ import_globalenv_ui <- function(id, id = ns("import-result"), status = "info", tags$b(i18n$t("No data selected!")), - i18n$t("Use a datasat from your environment or from the environment of a package."), + i18n$t("Use a dataset from your environment or from the environment of a package."), dismissible = TRUE ) ), @@ -4210,7 +4210,9 @@ import_globalenv_server <- function(id, selected = character(0), choices = choices, choicesOpt = choicesOpt, - options = list(title = i18n$t("List of datasets...")) + options = list( + title = i18n$t("List of datasets..."), + "live-search" = TRUE) ) }) @@ -4219,7 +4221,7 @@ import_globalenv_server <- function(id, id = "import-result", status = "info", tags$b(i18n$t("No data selected!")), - i18n$t("Use a datasat from your environment or from the environment of a package."), + i18n$t("Use a dataset from your environment or from the environment of a package."), dismissible = TRUE ) ) @@ -5311,7 +5313,7 @@ plot_box <- function(data, pri, sec, ter = NULL,...) { ) }) - wrap_plot_list(out,title=glue::glue("Grouped by {get_label(data,ter)}"),...) + wrap_plot_list(out,title=glue::glue(i18n$t("Grouped by {get_label(data,ter)}")),...) } @@ -5794,7 +5796,7 @@ plot_sankey <- function(data, pri, sec, ter = NULL, color.group = "pri", colors #' plot_sankey_single("first", "last", color.group = "pri") #' mtcars |> #' default_parsing() |> -#' plot_sankey_single("cyl", "vs", color.group = "pri") +#' plot_sankey_single("cyl", "vs", color.group = "pri") plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), colors = NULL, ...) { color.group <- match.arg(color.group) @@ -5969,7 +5971,7 @@ plot_violin <- function(data, pri, sec, ter = NULL) { ) }) - wrap_plot_list(out, title = glue::glue("Grouped by {get_label(data,ter)}")) + wrap_plot_list(out, title = glue::glue(i18n$t("Grouped by {get_label(data,ter)}"))) }) # patchwork::wrap_plots(out,guides = "collect") } @@ -6088,12 +6090,6 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { width = "100%" ), shiny::helpText(i18n$t("Format should be either 'https://redcap.your.institution/' or 'https://your.institution/redcap/'")), - # shiny::textInput( - # inputId = ns("api"), - # label = "API token", - # value = "", - # width = "100%" - # ), shiny::passwordInput( inputId = ns("api"), label = i18n$t("API token"), @@ -6117,7 +6113,7 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shinyWidgets::alert( id = ns("connect-result"), status = "info", - tags$p(phosphoricons::ph("info", weight = "bold"), "Please fill in server address (URI) and API token, then press 'Connect'.") + tags$p(phosphoricons::ph("info", weight = "bold"), i18n$t("Please fill in web address and API token, then press 'Connect'.")) ), dismissible = TRUE ), @@ -7794,18 +7790,18 @@ regression_ui <- function(id, ...) { # ) # ), shiny::uiOutput(outputId = ns("regression_type")), - shiny::radioButtons( - inputId = ns("all"), - label = i18n$t("Specify covariables"), - inline = TRUE, - selected = 2, - choiceNames = c( - "Yes", - "No" - ), - choiceValues = c(1, 2) - ), - # shiny::uiOutput(outputId = ns("all")), + # shiny::radioButtons( + # inputId = ns("all"), + # label = i18n$t("Specify covariables"), + # inline = TRUE, + # selected = 2, + # choiceNames = c( + # "Yes", + # "No" + # ), + # choiceValues = c(1, 2) + # ), + shiny::uiOutput(outputId = ns("all_vars")), shiny::conditionalPanel( condition = "input.all==1", shiny::uiOutput(outputId = ns("regression_vars")), @@ -7827,17 +7823,7 @@ regression_ui <- function(id, ...) { ), shiny::helpText(i18n$t("Press 'Analyse' to create the regression model and after changing parameters.")), shiny::tags$br(), - shiny::radioButtons( - inputId = ns("add_regression_p"), - label = i18n$t("Show p-value"), - inline = TRUE, - selected = "yes", - choiceNames = c( - "Yes", - "No" - ), - choiceValues = c("yes", "no") - ), + shiny::uiOutput(outputId = ns("add_regression_p")), # shiny::tags$br(), # shiny::radioButtons( # inputId = ns("tbl_theme"), @@ -7985,20 +7971,32 @@ regression_server <- function(id, bslib::accordion_panel_update(id = "acc_checks", target = "acc_pan_checks", title = i18n$t("Checks")) }) - # shiny::observe({ - # shiny::updateRadioButtons( - # session = session, - # inputId = "all", - # label = i18n$t("Specify covariables"), - # # inline = TRUE, - # # selected = 2, - # choiceNames = c( - # i18n$t("Yes"), - # i18n$t("No") - # ), - # choiceValues = c(1, 2) - # ) - # }) + output$all_vars <- shiny::renderUI( + shiny::radioButtons( + inputId = ns("all"), + label = i18n$t("Specify covariables"), + inline = TRUE, + selected = 2, + choiceNames = c( + i18n$t("Yes"), + i18n$t("No") + ), + choiceValues = c(1, 2) + ), + ) + + output$add_regression_p <- shiny::renderUI( + shiny::radioButtons( + inputId = ns("add_regression_p"), + label = i18n$t("Show p-value"), + inline = TRUE, + selected = "yes", + choiceNames = c( + i18n$t("Yes"), + i18n$t("No") + ), + choiceValues = c("yes", "no") + )) @@ -8796,7 +8794,7 @@ ui_elements <- function(selection) { import_globalenv_ui( id = "env", title = NULL, - packages = c("NHANES", "stRoke") + packages = c("NHANES", "stRoke", "datasets") ) ), # shiny::conditionalPanel( @@ -9027,6 +9025,7 @@ ui_elements <- function(selection) { ), shiny::tags$br(), shiny::helpText(i18n$t("Reset to original imported dataset. Careful! There is no un-doing.")), + shiny::tags$br(), shiny::tags$br() ) # ) @@ -9139,7 +9138,7 @@ ui_elements <- function(selection) { title = "Settings", icon = bsicons::bs_icon("x-circle"), shiny::uiOutput("missings_var"), - shiny::helpText(i18n$t("To consider if data is missing by random, choose the outcome/dependent variable, if it has any missings to evaluate if there is a significant difference across other variables depending on missing data or not.")) + shiny::helpText(i18n$t("To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random.")) ) ) ), @@ -11459,7 +11458,8 @@ ui <- bslib::page_fixed( #### Current file: /Users/au301842/FreesearchR/app/server.R ######## -data(mtcars) +data("mtcars") +data("iris") # trial <- gtsummary::trial # starwars <- dplyr::starwars @@ -11739,7 +11739,7 @@ server <- function(input, output, session) { ) }, error = function(err) { - showNotification(paste0("We encountered the following error showing missingness: ", err), type = "err") + showNotification(paste(i18n$t("We encountered the following error showing missingness:"), err), type = "err") } ) }) @@ -12176,7 +12176,7 @@ server <- function(input, output, session) { show_data(REDCapCAST::fct_drop(rv$data_filtered), title = i18n$t("Uploaded data overview"), type = "modal") }, error = function(err) { - showNotification(paste0("We encountered the following error browsing your data: ", err), type = "err") + showNotification(paste(i18n$t("We encountered the following error browsing your data:"), err), type = "err") } ) }) @@ -12200,7 +12200,7 @@ server <- function(input, output, session) { ) }, error = function(err) { - showNotification(paste0("We encountered the following error showing missingness: ", err), type = "err") + showNotification(paste(i18n$t("We encountered the following error showing missingness:"), err), type = "err") } ) }) @@ -12247,12 +12247,12 @@ server <- function(input, output, session) { output$code_import <- shiny::renderUI({ shiny::req(rv$code$import) - prismCodeBlock(paste0(i18n$t("#Data import\n"), rv$code$import)) + prismCodeBlock(paste0("#", i18n$t("Data import"), "\n", rv$code$import)) }) output$code_format <- shiny::renderUI({ shiny::req(rv$code$format) - prismCodeBlock(paste0(i18n$t("#Data import formatting\n"), rv$code$format)) + prismCodeBlock(paste0("#", i18n$t("Data import formatting"), "\n", rv$code$format)) }) output$code_data <- shiny::renderUI({ @@ -12270,23 +12270,23 @@ server <- function(input, output, session) { pipe_string() |> expression_string(assign.str = "df <- df |>\n") - prismCodeBlock(paste0("#Data modifications\n", out)) + prismCodeBlock(paste0("#", i18n$t("Data modifications"), "\n", out)) }) output$code_variables <- shiny::renderUI({ shiny::req(rv$code$variables) out <- expression_string(rv$code$variables, assign.str = "df <- df |>\n") - prismCodeBlock(paste0("#Variables filter\n", out)) + prismCodeBlock(paste0("#", i18n$t("Variables filter"), "\n", out)) }) output$code_filter <- shiny::renderUI({ shiny::req(rv$code$filter) - prismCodeBlock(paste0("#Data filter\n", rv$code$filter)) + prismCodeBlock(paste0("#", i18n$t("Data filter"), "\n", rv$code$filter)) }) output$code_table1 <- shiny::renderUI({ shiny::req(rv$code$table1) - prismCodeBlock(paste0("#Data characteristics table\n", rv$code$table1)) + prismCodeBlock(paste0("#", i18n$t("Data characteristics table"), "\n", rv$code$table1)) }) @@ -12330,7 +12330,7 @@ server <- function(input, output, session) { output$data_info_nochar <- shiny::renderUI({ shiny::req(rv$list$data) - data_description(rv$list$data, data_text = "The dataset without text variables") + data_description(rv$list$data, data_text = i18n$t("The dataset without text variables")) }) ## Only allow evaluation if the dataset has fewer then 50 variables @@ -12369,9 +12369,9 @@ server <- function(input, output, session) { # # stop(glue::glue(i18n$t("The data includes {n_col} variables. Please limit to 100."))) # print("Please limit to 100.") # } else { - shiny::withProgress(message = "Creating the table. Hold on for a moment..", { - rv$list$table1 <- rlang::exec(create_baseline, !!!append_list(rv$list$data, parameters, "data")) - }) + shiny::withProgress(message = i18n$t("Creating the table. Hold on for a moment.."), { + rv$list$table1 <- rlang::exec(create_baseline, !!!append_list(rv$list$data, parameters, "data")) + }) # } # }, # error = function(err) { @@ -12399,7 +12399,7 @@ server <- function(input, output, session) { inputId = "outcome_var_cor", selected = "none", data = rv$list$data, - label = "Select outcome variable", + label = i18n$t("Select outcome variable"), col_subset = c( "none", colnames(rv$list$data) @@ -12425,7 +12425,7 @@ server <- function(input, output, session) { output$missings_var <- shiny::renderUI({ columnSelectInput( inputId = "missings_var", - label = "Select variable to stratify analysis", + label = i18n$t("Select variable to stratify analysis"), data = shiny::reactive({ shiny::req(rv$data_filtered) rv$data_filtered[apply(rv$data_filtered, 2, anyNA)] @@ -12523,7 +12523,7 @@ server <- function(input, output, session) { rv$list$regression <- rv$regression() rv$list$missings <- rv$missings() - shiny::withProgress(message = "Generating the report. Hold on for a moment..", { + shiny::withProgress(message = i18n$t("Generating the report. Hold on for a moment.."), { tryCatch( { rv$list |> diff --git a/inst/apps/FreesearchR/www/intro.html b/inst/apps/FreesearchR/www/intro.html index 15f9f571..6c2f1e96 100644 --- a/inst/apps/FreesearchR/www/intro.html +++ b/inst/apps/FreesearchR/www/intro.html @@ -8,6 +8,10 @@ a free tool for basic data evaluation and analysis. If you need more advanced tools, start with FreesearchR and then you’ll probably be better off using R or similar directly.

+

The FreesearchR app should be available to +as many people as possible, and the interface can be translated to any +language. If you have suggestions or want to help translate, please +reach out on info@freesearchr.org.

With this tool you can:

  1. Import data from a spreadsheet/file on your diff --git a/inst/apps/FreesearchR/www/intro.md b/inst/apps/FreesearchR/www/intro.md index 69bea66d..c7e44312 100644 --- a/inst/apps/FreesearchR/www/intro.md +++ b/inst/apps/FreesearchR/www/intro.md @@ -6,6 +6,8 @@ output: html_fragment This is the ***FreesearchR*** data analysis tool, a free tool for basic data evaluation and analysis. If you need more advanced tools, start with ***FreesearchR*** and then you'll probably be better off using *R* or similar directly. +The ***FreesearchR*** app should be available to as many people as possible, and the interface can be translated to any language. If you have suggestions or want to help translate, please reach out on [info@freesearchr.org](mailto:info@freesearchr.org). + With this tool you can: 1. **Import data** from a spreadsheet/file on your machine, directly from a [REDCap](https://projectredcap.org/ "Read more on the data capture tool REDCap") server, try it with sample data or access data directly [if run in R locally](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Read about running FreesearchR on your local machine") diff --git a/inst/apps/FreesearchR/www/intro_da.html b/inst/apps/FreesearchR/www/intro_da.html index e372d960..335b2551 100644 --- a/inst/apps/FreesearchR/www/intro_da.html +++ b/inst/apps/FreesearchR/www/intro_da.html @@ -20,18 +20,18 @@ eksempel-data eller tilgå data direkte missing observations

  2. -
  3. Visualise data by creating simple, clean plots for -overview and quick insights

  4. -
  5. Create simple regression models for even more -advanced data analyses

  6. -
  7. Download results as a report, get the modified -data set and save the code for learning and to reproduce the results -later

  8. +
  9. Evaluer data ved hjælp af beskrivende +analysemetoder og inspicer krydskorrelationer samt manglende observationer

  10. +
  11. Visualiser data ved at oprette enkle, rene plots for +overblik og hurtig indsigt

  12. +
  13. Opret simple regressionsmodeller til endnu mere +avancerede dataanalyser

  14. +
  15. Download resultater som en rapport, hent det +ændrede datasæt og gem koden til læring og til senere reproduktion af +resultaterne

-

The full project -documentation is here where you’ll find detailed descriptions of the -app and link to the source code! If you want to share feedback, -please follow this link to a simple survey.

+

Den fulde projektdokumentation er +her, hvor du finder detaljerede beskrivelser af appen og et link til +kildekoden! Hvis du vil dele feedback, +kan du følge dette link til et enkelt spørgeskema.

diff --git a/inst/apps/FreesearchR/www/intro_da.md b/inst/apps/FreesearchR/www/intro_da.md index 4a0afe5d..41c94501 100644 --- a/inst/apps/FreesearchR/www/intro_da.md +++ b/inst/apps/FreesearchR/www/intro_da.md @@ -14,12 +14,12 @@ Herunder kan du helt kort se, hvad du kan bruge ***FreesearchR*** til: 2. **Forbered** data til analys ved at filtrere, ændre variabler eller opret helt nye variabler -3. **Evaluate data** using descriptive analyses methods and inspect cross-correlations as well as [missing observations](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Read more about missing data") +3. **Evaluer data** ved hjælp af beskrivende analysemetoder og inspicer krydskorrelationer samt [manglende observationer](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Læs mere om manglende data") -4. **Visualise data** by [creating simple, clean plots](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "See available plot types") for overview and quick insights +4. **Visualiser data** ved at [oprette enkle, rene plots](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "Se tilgængelige plottyper") for overblik og hurtig indsigt -5. **Create simple regression models** for even more advanced data analyses +5. **Opret simple regressionsmodeller** til endnu mere avancerede dataanalyser -6. **Download** results as a report, get the modified data set and save the code for learning and to reproduce the results later +6. **Download** resultater som en rapport, hent det ændrede datasæt og gem koden til læring og til senere reproduktion af resultaterne -The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) where you'll find detailed descriptions of the app and link to the source code! If you want to [share feedback, please follow this link to a simple survey](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8). +Den fulde [projektdokumentation er her](https://agdamsbo.github.io/FreesearchR/), hvor du finder detaljerede beskrivelser af appen og et link til kildekoden! Hvis du vil [dele feedback, kan du følge dette link til et enkelt spørgeskema](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8). diff --git a/inst/apps/FreesearchR/www/intro_sw.html b/inst/apps/FreesearchR/www/intro_sw.html index 40da6fd4..cd24b148 100644 --- a/inst/apps/FreesearchR/www/intro_sw.html +++ b/inst/apps/FreesearchR/www/intro_sw.html @@ -1,8 +1,9 @@ -
-

Karibu

+
+

Karibu sana! +

Hii ni FreesearchR zana ya kuchanganua data, zana isiyolipishwa ya kutathmini na kuchanganua data msingi. Iwapo unahitaji zana za kina zaidi, anza na @@ -12,24 +13,24 @@ kutumia R au sawa moja kwa moja.

ungependa kuchangia, tafadhali wasiliana na info@freesearchr.org.

Na FreesearchR unaweza:

    -
  1. Import data from a spreadsheet/file on your -machine, directly from a REDCap server, try -it with sample data or access data directly if run in R -locally

  2. -
  3. Prepare data for analysis by filtering data, -modifying variables or create new variables

  4. -
  5. Evaluate data using descriptive analyses methods -and inspect cross-correlations as well as missing observations

  6. -
  7. Visualise data by creating simple, clean plots for -overview and quick insights

  8. -
  9. Create simple regression models for even more -advanced data analyses

  10. -
  11. Download results as a report, get the modified -data set and save the code for learning and to reproduce the results -later

  12. +
  13. Ingiza data kutoka kwa lahajedwali/faili kwenye +mashine yako, moja kwa moja kutoka kwa seva ya REDCap, +ijaribu kwa sampuli ya data au ufikie data moja kwa moja ikiwa +inaendeshwa katika R ndani ya nchi

  14. +
  15. Andaa data kwa uchanganuzi kwa kuchuja data, +kurekebisha vigeu au kuunda vigeu vipya

  16. +
  17. Tathmini data kwa kutumia mbinu za uchanganuzi +wa maelezo na ukague miunganisho mtambuka pamoja na maoni yanayokosekana

  18. +
  19. Onyesha data kwa kuunda viwanja rahisi na +safi kwa muhtasari na maarifa ya haraka

  20. +
  21. Unda miundo rahisi ya kurejesha kumbukumbu kwa +uchanganuzi wa hali ya juu zaidi wa data

  22. +
  23. Pakua matokeo kama ripoti, pata seti ya data +iliyorekebishwa na uhifadhi msimbo wa kujifunza na kutoa matokeo +baadaye

-

The full project -documentation is here where you’ll find detailed descriptions of the -app and link to the source code! If you want to share feedback, -please follow this link to a simple survey.

+

Hati kamili za +mradi ziko hapa ambapo utapata maelezo ya kina ya programu na kiungo +cha msimbo wa chanzo! Iwapo ungependa kushiriki maoni, +tafadhali fuata kiungo hiki cha utafiti rahisi.

diff --git a/inst/apps/FreesearchR/www/intro_sw.md b/inst/apps/FreesearchR/www/intro_sw.md index 06a8bea3..deb5d593 100644 --- a/inst/apps/FreesearchR/www/intro_sw.md +++ b/inst/apps/FreesearchR/www/intro_sw.md @@ -2,7 +2,7 @@ output: html_fragment --- -# Karibu +# Karibu sana! Hii ni ***FreesearchR*** zana ya kuchanganua data, zana isiyolipishwa ya kutathmini na kuchanganua data msingi. Iwapo unahitaji zana za kina zaidi, anza na ***FreesearchR*** na basi pengine utakuwa bora kutumia *R* au sawa moja kwa moja. @@ -10,16 +10,16 @@ Tunajitahidi kutambulisha tafsiri kamili kwa Kiswahili. Ikiwa ungependa kuchangi Na ***FreesearchR*** unaweza: -1. **Import data** from a spreadsheet/file on your machine, directly from a [REDCap](https://projectredcap.org/ "Read more on the data capture tool REDCap") server, try it with sample data or access data directly [if run in R locally](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Read about running FreesearchR on your local machine") +1. **Ingiza data** kutoka kwa lahajedwali/faili kwenye mashine yako, moja kwa moja kutoka kwa seva ya [REDCap](https://projectredcap.org/ "Soma zaidi kuhusu zana ya kunasa data ya REDCap"), ijaribu kwa sampuli ya data au ufikie data moja kwa moja [ikiwa inaendeshwa katika R ndani ya nchi](https://agdamsbo.github.io/Freesearchourcal-R/-#ownon-run-your-ruwnon-" FreesearchR kwenye mashine yako ya karibu") -2. **Prepare** data for analysis by filtering data, modifying variables or create new variables +2. **Andaa** data kwa uchanganuzi kwa kuchuja data, kurekebisha vigeu au kuunda vigeu vipya -3. **Evaluate data** using descriptive analyses methods and inspect cross-correlations as well as [missing observations](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Read more about missing data") +3. **Tathmini data** kwa kutumia mbinu za uchanganuzi wa maelezo na ukague miunganisho mtambuka pamoja na [maoni yanayokosekana](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Soma zaidi kuhusu kukosa data") -4. **Visualise data** by [creating simple, clean plots](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "See available plot types") for overview and quick insights +4. **Onyesha data** kwa [kuunda viwanja rahisi na safi](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "Angalia aina zinazopatikana za viwanja") kwa muhtasari na maarifa ya haraka -5. **Create simple regression models** for even more advanced data analyses +5. **Unda miundo rahisi ya kurejesha kumbukumbu** kwa uchanganuzi wa hali ya juu zaidi wa data -6. **Download** results as a report, get the modified data set and save the code for learning and to reproduce the results later +6. **Pakua** matokeo kama ripoti, pata seti ya data iliyorekebishwa na uhifadhi msimbo wa kujifunza na kutoa matokeo baadaye -The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) where you'll find detailed descriptions of the app and link to the source code! If you want to [share feedback, please follow this link to a simple survey](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8). +[Hati kamili za mradi ziko hapa](https://agdamsbo.github.io/FreesearchR/) ambapo utapata maelezo ya kina ya programu na kiungo cha msimbo wa chanzo! Iwapo ungependa [kushiriki maoni, tafadhali fuata kiungo hiki cha utafiti rahisi](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8). diff --git a/inst/translations/translation_da.csv b/inst/translations/translation_da.csv index 7b56f3be..fde79a3e 100644 --- a/inst/translations/translation_da.csv +++ b/inst/translations/translation_da.csv @@ -176,11 +176,11 @@ "Confirm","Bekræft" "The filtered data","Filtreret data" "Create new factor","Ny kategorisk variabel" -"This window is aimed at advanced users and require some *R*-experience!","This window is aimed at advanced users and require some *R*-experience!" -"Create new variables","Opret ny variabel" +"This window is aimed at advanced users and require some *R*-experience!","Dette vindue er primært for avancerede brugere med nogen *R*-erfaring!" +"Create new variables","Opret nye variabler" "Select data types to include","Vælg datatyper, der skal inkluderes" "Uploaded data overview","Overblik over uploaded data" -"Here is an overview of how your data is interpreted, and where data is missing. Use this information to consider if data is missing at random or if some observations are missing systematically wich may be caused by an observation bias.","Here is an overview of how your data is interpreted, and where data is missing. Use this information to consider if data is missing at random or if some observations are missing systematically wich may be caused by an observation bias." +"Here is an overview of how your data is interpreted, and where data is missing. Use this information to consider if data is missing at random or if some observations are missing systematically wich may be caused by an observation bias.","Her har du en oversigt over hvordan data er blevet formateret, og hvor der er manglende observationer. Brug informationen til at overveje om manglende data mangler tilfældigt eller og der er et mønster, som kan være et udtryk for systematisk manglende data (observationsbias)." "Specify covariables","Angiv kovariabler" "If none are selected, all are included.","Hvis ingen er valgt inkluderes alle." "Analyse","Analysér" @@ -191,67 +191,67 @@ "Please confirm data reset!","Bekræft gendannelse af data!" "Import data from REDCap","Importér data fra REDCap" "REDCap server","REDCap-server" -"Web address","Web address" +"Web address","Serveradresse" "Format should be either 'https://redcap.your.institution/' or 'https://your.institution/redcap/'","Adressen skal være som 'https://redcap.your.institution/' eller 'https://your.institution/redcap/'" -"API token","API token" +"API token","API-nøgle" "The token is a string of 32 numbers and letters.","En API-nøgle består af ialt 32 tal og bogstaver." "Connect","Forbind" "Data import parameters","Data import parameters" -"Select fields/variables to import and click the funnel to apply optional filters","Select fields/variables to import and click the funnel to apply optional filters" +"Select fields/variables to import and click the funnel to apply optional filters","Vælg variabler, der skal importeres og tryk på tragten for at anvende valgfrie filtre" "Import","Import" -"Click to see data dictionary","Click to see data dictionary" -"Connected to server!","Connected to server!" -"The {data_rv$info$project_title} project is loaded.","The {data_rv$info$project_title} project is loaded." +"Click to see data dictionary","Tryk for at se metadata (Data Dictionary)" +"Connected to server!","Forbindelse til serveren oprettet!" +"The {data_rv$info$project_title} project is loaded.","{data_rv$info$project_title}-projektet er forbundet." "Data dictionary","Data dictionary" -"Preview:","Preview:" -"Imported data set","Imported data set" -"Select fields/variables to import:","Select fields/variables to import:" -"Specify the data format","Specify the data format" -"Fill missing values?","Fill missing values?" -"Requested data was retrieved!","Requested data was retrieved!" -"Data retrieved, but it looks like only the ID was retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access.","Data retrieved, but it looks like only the ID was retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access." -"Data retrieved, but it looks like not all requested fields were retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access.","Data retrieved, but it looks like not all requested fields were retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access." -"Click to see the imported data","Click to see the imported data" -"Regression table","Regression table" -"Import a dataset from an environment","Import a dataset from an environment" +"Preview:","Forsmag:" +"Imported data set","Importeret datasæt" +"Select fields/variables to import:","Vælg variabler, der skal importeres:" +"Specify the data format","Specificér dataformatet" +"Fill missing values?","Skal manglende observationer udfyldes?" +"Requested data was retrieved!","Det udvalgte data blev hentet!" +"Data retrieved, but it looks like only the ID was retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access.","Data er hentet, men det ser ud til kun at indeholde ID-variablen. Du skal kontakte din REDCap-administrator og sikre dig at du har adgang til faktisk at hente de udvalgte data." +"Data retrieved, but it looks like not all requested fields were retrieved from the server. Please check with your REDCap administrator that you have required permissions for data access.","Data er hentet, men det ser ud til kun at indeholde nogle af de udvalgte variabler. Du skal kontakte din REDCap-administrator og sikre dig at du har adgang til faktisk at hente de udvalgte data." +"Click to see the imported data","Tryk for at se de importerede data" +"Regression table","Regressionstabel" +"Import a dataset from an environment","Importer et datasæt fra et kodemiljø" "Select a dataset:","Vælg datasæt:" -"List of datasets...","List of datasets..." +"List of datasets...","Liste af datasæt..." "No data selected!","Ingen data valgt!" -"Use a datasat from your environment or from the environment of a package.","Use a datasat from your environment or from the environment of a package." "No dataset here...","Ingen datasæt her..." -"Use a dataset from your environment or from the environment of a package.","Use a dataset from your environment or from the environment of a package." +"Use a dataset from your environment or from the environment of a package.","Brug et datasæt fra dit lokale kodemiljø eller fra en tilgængelig pakke." "Not a data.frame","Ikke en data.frame" "Select source","Vælg datakilde" "Select a data source:","Vælg datakilde:" "Yes","Ja" "No","Nej" -"Coefficient plot","Coefficient plot" -"Select outcome variable","Select outcome variable" -"Choose regression analysis","Choose regression analysis" -"Covariables to format as categorical","Covariables to format as categorical" -"Select variable to stratify baseline","Select variable to stratify baseline" -"Select models to plot","Select models to plot" -"Creating regression models failed with the following error:","Creating regression models failed with the following error:" -"Creating a regression table failed with the following error:","Creating a regression table failed with the following error:" -"Saving the plot. Hold on for a moment..","Saving the plot. Hold on for a moment.." -"Running model assumptions checks failed with the following error:","Running model assumptions checks failed with the following error:" -"Select checks to plot","Select checks to plot" -"Multivariable regression model checks","Multivariable regression model checks" -"Grouped by {get_label(data,ter)}","Grouped by {get_label(data,ter)}" -"Option to perform statistical comparisons between strata in baseline table.","Option to perform statistical comparisons between strata in baseline table." -"Press 'Evaluate' to create the comparison table.","Press 'Evaluate' to create the comparison table." -"The data includes {n_col} variables. Please limit to 100.","The data includes {n_col} variables. Please limit to 100." +"Coefficient plot","Koefficientplot" +"Select outcome variable","Vælg svarvariablen" +"Choose regression analysis","Vælg regressionsanalysen" +"Covariables to format as categorical","Kovariabler, der skal omklassificeres som kategoriske" +"Select variable to stratify baseline","Vælg variabel til a stratificere tabellen" +"Select models to plot","Vælg de modeller, der skal visualiseres" +"Creating regression models failed with the following error:","Oprettelsen af en regressionsmodel fejlede med den følgende besked:" +"Creating a regression table failed with the following error:","Oprettelsen af en regressionstabel fejlede med den følgende besked:" +"Saving the plot. Hold on for a moment..","Gemmer grafikken. Vent et øjeblik.." +"Running model assumptions checks failed with the following error:","Tjek af antagelser for regressionsmodellen fejlede med den følgende besked:" +"Select checks to plot","Vælg modeltests, der skal visualiseres" +"Multivariable regression model checks","Tests af multivariabel regressionsmodel" +"Grouped by {get_label(data,ter)}","Grupperet efter {get_label(data,ter)}" +"Option to perform statistical comparisons between strata in baseline table.","Mulighed for at udføre statistiske tests mellem strata i oversigtstabellen." +"Press 'Evaluate' to create the comparison table.","Tryk 'Evaluér' for at oprette en oversigtstabel." +"The data includes {n_col} variables. Please limit to 100.","Data indeholder {n_col} variabler. Begræns venligst til 100." "Data import","Data import" -"Data import formatting","Data import formatting" -"Data modifications","Data modifications" +"Data import formatting","Formatering af data ved import" +"Data modifications","Ændringer af data" "Variables filter","Variables filter" "Data filter","Data filter" -"Data characteristics table","Data characteristics table" -"The dataset without text variables","The dataset without text variables" -"Creating the table. Hold on for a moment..","Creating the table. Hold on for a moment.." -"Select variable to stratify analysis","Select variable to stratify analysis" -"Generating the report. Hold on for a moment..","Generating the report. Hold on for a moment.." -"We encountered the following error showing missingness:","We encountered the following error showing missingness:" -"We encountered the following error browsing your data:","We encountered the following error browsing your data:" -"To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random.","To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random." -"Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything.","Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything." +"Data characteristics table","Oversigtstabel" +"The dataset without text variables","Datasættet uden variabler formateret som tekst" +"Creating the table. Hold on for a moment..","Opretter tabellen. Vent et øjeblik.." +"Select variable to stratify analysis","Vælg variabler til at stratificere analysen" +"Generating the report. Hold on for a moment..","Opretter rapporten. Vent et øjeblik.." +"We encountered the following error showing missingness:","Under analysen af manglende observationer opstod følgende fejl:" +"We encountered the following error browsing your data:","I forsøget på at vise en dataoversigt opstod følgende fejl:" +"To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random.","Vælg svarvariablen, for at få hjælp til at vurdere om manglende observationer manglende tilfældigt eller ej (kun variabler med manglende data kan vælges). Hvis der er statistisk signifikant forskel mellem nogle af de øvrige variabler i forhold til manglende data i den valgte variable kan det være et udtryk for at data ikke mangler tilfældigt." +"Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything.","Vælg et navn til den nye variabel, skriv din formel og tryk så på knappen for at gemme variablen, eller annuler for at lukke uden at gemme." +"Please fill in web address and API token, then press 'Connect'.","Udfyld serveradresse og API-nøgle, og tryk så 'Fobind'." diff --git a/inst/translations/translation_sw.csv b/inst/translations/translation_sw.csv index 8d7774d0..5fdf42b2 100644 --- a/inst/translations/translation_sw.csv +++ b/inst/translations/translation_sw.csv @@ -217,7 +217,6 @@ "Select a dataset:","Select a dataset:" "List of datasets...","List of datasets..." "No data selected!","No data selected!" -"Use a datasat from your environment or from the environment of a package.","Use a datasat from your environment or from the environment of a package." "No dataset here...","No dataset here..." "Use a dataset from your environment or from the environment of a package.","Use a dataset from your environment or from the environment of a package." "Not a data.frame","Not a data.frame" @@ -255,3 +254,4 @@ "We encountered the following error browsing your data:","We encountered the following error browsing your data:" "To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random.","To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random." "Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything.","Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything." +"Please fill in web address and API token, then press 'Connect'.","Please fill in web address and API token, then press 'Connect'." diff --git a/man/plot_sankey_single.Rd b/man/plot_sankey_single.Rd index 83742a75..5ba810b8 100644 --- a/man/plot_sankey_single.Rd +++ b/man/plot_sankey_single.Rd @@ -39,5 +39,5 @@ data.frame( plot_sankey_single("first", "last", color.group = "pri") mtcars |> default_parsing() |> -plot_sankey_single("cyl", "vs", color.group = "pri") + plot_sankey_single("cyl", "vs", color.group = "pri") }