## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup-------------------------------------------------------------------- library(formr) # So this vignette can run offline, the API calls below are replayed from # pre-recorded responses (vcr "cassettes" shipped with the package). With a # real server you would simply call formr_api_authenticate() with your own # host and credentials instead of this block. .formr_vcr <- requireNamespace("vcr", quietly = TRUE) && nzchar(system.file("extdata/vcr_cassettes", package = "formr")) if (.formr_vcr) { vcr::vcr_configure( dir = system.file("extdata/vcr_cassettes", package = "formr"), filter_sensitive_data = list( "formr-client-id-redacted" = "dummy_client_id", "formr-client-secret-redacted" = "dummy_client_secret", "formr-host-redacted" = "api.localhost" ) ) vcr::use_cassette("formr_api_authenticate", { formr_api_authenticate(host = "http://api.localhost", client_id = "dummy_client_id", client_secret = "dummy_client_secret", verbose = FALSE) }) } ## ----eval = FALSE------------------------------------------------------------- # # On a real server, authenticate with your own host/account: # formr_api_authenticate(host = "https://api.rforms.org", account = "dashboard") ## ----eval = .formr_vcr-------------------------------------------------------- # Replayed from a recorded response for a run called "test-run": vcr::use_cassette("formr_api_results_fetch_single", { df <- formr_api_results("test-run", verbose = FALSE) }) class(df) # a "formr_results" tibble, ready for analysis ## ----eval = FALSE------------------------------------------------------------- # # Get processed data, but strictly separated by survey (no join) # list_of_dfs <- formr_api_results("daily_diary", join = FALSE) # # # Get raw data (types recognized, but NO reversing or scoring) # raw_data <- formr_api_results("daily_diary", compute_scales = FALSE) ## ----------------------------------------------------------------------------- # Raw results: one row per session, items not yet reversed or scored. results <- jsonlite::fromJSON( system.file("extdata/gods_example_results.json", package = "formr")) # Item metadata: a table with (at least) a `name` and a `choices` column — # exactly what formr_api_survey_structure() returns from the server. items_raw <- jsonlite::fromJSON( system.file("extdata/gods_example_items.json", package = "formr"), simplifyVector = FALSE) item_list <- data.frame( name = vapply(items_raw$items, function(it) it$name, character(1)), stringsAsFactors = FALSE) item_list$choices <- lapply(items_raw$items, function(it) it$choices) head(results[, c("session", "religiousness_2R", "religiousness_3")]) ## ----------------------------------------------------------------------------- df_reversed <- formr_api_reverse(results = results, item_list = item_list) # religiousness_2R is reverse-keyed — its values are now flipped: data.frame(before = results$religiousness_2R, after = df_reversed$religiousness_2R) ## ----------------------------------------------------------------------------- df_scored <- formr_api_aggregate(results = df_reversed, item_list = item_list, min_items = 1) # New scale columns appear alongside the raw items: head(df_scored[, c("session", "religiousness", "prefer")]) ## ----eval = FALSE------------------------------------------------------------- # library(formr) # library(dplyr) # # formr_api_authenticate(host = "https://api.rforms.org") # your host # data <- formr_api_results("daily_diary") # fetch + process # summary(data$bfi_neuro) # scale computed for you