From eb0a8fa379ee4878161423915fc042e9c91bbfcd Mon Sep 17 00:00:00 2001 From: Ernest Guevarra Date: Fri, 12 Apr 2024 22:16:21 +0100 Subject: [PATCH] refresh repository --- .github/workflows/R-CMD-check.yaml | 3 +- .github/workflows/pkgdown.yaml | 48 +++ .github/workflows/test-coverage.yaml | 8 +- DESCRIPTION | 7 +- _pkgdown.yml | 4 + docs/404.html | 109 ----- docs/CODE_OF_CONDUCT.html | 122 ------ docs/CONTRIBUTING.html | 107 ----- docs/LICENSE-text.html | 142 ------ docs/LICENSE.html | 278 ------------ docs/NEWS.html | 144 ------- docs/README.html | 197 --------- docs/authors.html | 110 ----- docs/bootstrap-toc.css | 60 --- docs/bootstrap-toc.js | 159 ------- docs/cran-comments.html | 203 --------- docs/docsearch.css | 148 ------- docs/docsearch.js | 85 ---- docs/index.html | 298 ------------- docs/jquery.sticky-kit.min.js | 11 - docs/link.svg | 12 - docs/news/index.html | 131 ------ docs/pkgdown.css | 384 ----------------- docs/pkgdown.js | 108 ----- docs/pkgdown.yml | 9 - docs/reference/Rplot001.png | Bin 1011 -> 0 bytes docs/reference/create_sd.html | 107 ----- docs/reference/expandMultChoice.html | 144 ------- docs/reference/expandMultipleChoice.html | 213 --------- docs/reference/expand_choice.html | 156 ------- docs/reference/export_data.html | 219 ---------- docs/reference/figures/odkr.png | Bin 102170 -> 0 bytes docs/reference/get_briefcase.html | 115 ----- docs/reference/get_data.html | 240 ----------- docs/reference/get_help.html | 124 ------ docs/reference/index.html | 170 -------- docs/reference/mergeNestedODK.html | 140 ------ docs/reference/odkr.html | 118 ----- docs/reference/pull_local.html | 159 ------- docs/reference/pull_remote.html | 183 -------- docs/reference/push_data.html | 176 -------- docs/reference/renameODK.html | 526 ----------------------- docs/reference/sampleData1.html | 412 ------------------ docs/reference/sampleData2.html | 467 -------------------- docs/reference/sampleData3.html | 344 --------------- docs/sitemap.xml | 90 ---- inst/WORDLIST | 4 +- man/odkr.Rd | 9 +- tests/testthat.R | 11 +- 49 files changed, 77 insertions(+), 6937 deletions(-) create mode 100644 .github/workflows/pkgdown.yaml create mode 100644 _pkgdown.yml delete mode 100644 docs/404.html delete mode 100644 docs/CODE_OF_CONDUCT.html delete mode 100644 docs/CONTRIBUTING.html delete mode 100644 docs/LICENSE-text.html delete mode 100644 docs/LICENSE.html delete mode 100644 docs/NEWS.html delete mode 100644 docs/README.html delete mode 100644 docs/authors.html delete mode 100644 docs/bootstrap-toc.css delete mode 100644 docs/bootstrap-toc.js delete mode 100644 docs/cran-comments.html delete mode 100644 docs/docsearch.css delete mode 100644 docs/docsearch.js delete mode 100644 docs/index.html delete mode 100644 docs/jquery.sticky-kit.min.js delete mode 100644 docs/link.svg delete mode 100644 docs/news/index.html delete mode 100644 docs/pkgdown.css delete mode 100644 docs/pkgdown.js delete mode 100644 docs/pkgdown.yml delete mode 100644 docs/reference/Rplot001.png delete mode 100644 docs/reference/create_sd.html delete mode 100644 docs/reference/expandMultChoice.html delete mode 100644 docs/reference/expandMultipleChoice.html delete mode 100644 docs/reference/expand_choice.html delete mode 100644 docs/reference/export_data.html delete mode 100644 docs/reference/figures/odkr.png delete mode 100644 docs/reference/get_briefcase.html delete mode 100644 docs/reference/get_data.html delete mode 100644 docs/reference/get_help.html delete mode 100644 docs/reference/index.html delete mode 100644 docs/reference/mergeNestedODK.html delete mode 100644 docs/reference/odkr.html delete mode 100644 docs/reference/pull_local.html delete mode 100644 docs/reference/pull_remote.html delete mode 100644 docs/reference/push_data.html delete mode 100644 docs/reference/renameODK.html delete mode 100644 docs/reference/sampleData1.html delete mode 100644 docs/reference/sampleData2.html delete mode 100644 docs/reference/sampleData3.html delete mode 100644 docs/sitemap.xml diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index a3ac618..14159b7 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -29,7 +29,7 @@ jobs: R_KEEP_PKG_SOURCE: yes steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-pandoc@v2 @@ -47,3 +47,4 @@ jobs: - uses: r-lib/actions/check-r-package@v2 with: upload-snapshots: true + build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")' diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml new file mode 100644 index 0000000..a7276e8 --- /dev/null +++ b/.github/workflows/pkgdown.yaml @@ -0,0 +1,48 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + release: + types: [published] + workflow_dispatch: + +name: pkgdown + +jobs: + pkgdown: + runs-on: ubuntu-latest + # Only restrict concurrency for non-PR jobs + concurrency: + group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::pkgdown, local::. + needs: website + + - name: Build site + run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) + shell: Rscript {0} + + - name: Deploy to GitHub pages 🚀 + if: github.event_name != 'pull_request' + uses: JamesIves/github-pages-deploy-action@v4.5.0 + with: + clean: false + branch: gh-pages + folder: docs diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index 2c5bb50..21b8a93 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -15,7 +15,7 @@ jobs: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-r@v2 with: @@ -31,7 +31,7 @@ jobs: covr::codecov( quiet = FALSE, clean = FALSE, - install_path = file.path(Sys.getenv("RUNNER_TEMP"), "package") + install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package") ) shell: Rscript {0} @@ -39,12 +39,12 @@ jobs: if: always() run: | ## -------------------------------------------------------------------- - find ${{ runner.temp }}/package -name 'testthat.Rout*' -exec cat '{}' \; || true + find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true shell: bash - name: Upload test results if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: coverage-test-failures path: ${{ runner.temp }}/package diff --git a/DESCRIPTION b/DESCRIPTION index 8957811..ea3b17a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -25,13 +25,14 @@ Imports: curl, rJava Suggests: - testthat, + testthat (>= 3.0.0), spelling, covr Encoding: UTF-8 Language: en-GB LazyData: true -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.1 Roxygen: list(markdown = TRUE) -URL: https://github.com/rapidsurveys/odkr, https://rapidsurveys.io/odkr +URL: https://github.com/rapidsurveys/odkr, https://rapidsurveys.io/odkr, BugReports: https://github.com/rapidsurveys/odkr/issues +Config/testthat/edition: 3 diff --git a/_pkgdown.yml b/_pkgdown.yml new file mode 100644 index 0000000..825c09e --- /dev/null +++ b/_pkgdown.yml @@ -0,0 +1,4 @@ +url: https://rapidsurveys.io/odkr/ +template: + bootstrap: 5 + diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 60f6914..0000000 --- a/docs/404.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -Page not found (404) • odkr - - - - - - - - - - - -
-
- - - - -
-
- - -Content not found. Please use links in the navbar. - -
- - - -
- - - -
- -
-

-

Site built with pkgdown 2.0.7.

-
- -
-
- - - - - - - - diff --git a/docs/CODE_OF_CONDUCT.html b/docs/CODE_OF_CONDUCT.html deleted file mode 100644 index 93c0b79..0000000 --- a/docs/CODE_OF_CONDUCT.html +++ /dev/null @@ -1,122 +0,0 @@ - -Contributor Covenant Code of Conduct • odkr - - -
-
- - - -
-
- - -
- -
-

Our Pledge

-

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.

-
-
-

Our Standards

-

Examples of behavior that contributes to creating a positive environment include:

-
  • Using welcoming and inclusive language
  • -
  • Being respectful of differing viewpoints and experiences
  • -
  • Gracefully accepting constructive criticism
  • -
  • Focusing on what is best for the community
  • -
  • Showing empathy towards other community members
  • -

Examples of unacceptable behavior by participants include:

-
  • The use of sexualized language or imagery and unwelcome sexual attention or advances
  • -
  • Trolling, insulting/derogatory comments, and personal or political attacks
  • -
  • Public or private harassment
  • -
  • Publishing others’ private information, such as a physical or electronic address, without explicit permission
  • -
  • Other conduct which could reasonably be considered inappropriate in a professional setting
  • -
-
-

Our Responsibilities

-

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

-

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

-
-
-

Scope

-

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

-
-
-

Enforcement

-

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at . The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

-

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.

-
-
-

Attribution

-

This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at http://contributor-covenant.org/version/1/4

-
-
- -
- - - -
- - - -
- -
-

Site built with pkgdown 2.0.7.

-
- -
- - - - - - - - diff --git a/docs/CONTRIBUTING.html b/docs/CONTRIBUTING.html deleted file mode 100644 index 0ae6cc0..0000000 --- a/docs/CONTRIBUTING.html +++ /dev/null @@ -1,107 +0,0 @@ - -Contributing • odkr - - -
-
- - - -
-
- - -
- -

When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with Ernest Guevarra repository before making a change.

-

Please note we have a code of conduct, please follow it in all your interactions with the project.

-


-
-

How to make a clean pull request

-
  • Create a personal fork of this project on Github.

  • -
  • Clone the fork on your local machine. Your remote repo on Github is called origin.

  • -
  • Add the original repository as a remote called upstream.

  • -
  • If you created your fork a while ago be sure to pull upstream changes into your local repository.

  • -
  • Create a new branch to work on! Branch from development.

  • -
  • Implement/fix your feature, comment your code.

  • -
  • Follow the code style of the project, including indentation.

  • -
  • Add or change the documentation as needed.

  • -
  • Squash your commits into a single commit with git’s interactive rebase. Create a new branch if necessary.

  • -
  • Push your branch to your fork on Github, the remote origin.

  • -
  • From your fork open a pull request in the correct branch using the specified Pull Request Template. Target this project’s development branch.

  • -
  • Update the README.md with details of changes to the interface particularly changes in how indicators are defined or addition of new indicators.

  • -
  • Increase the version numbers in any examples files and the README.md to the new version that this Pull Request would represent. The versioning scheme we use is SemVer.

  • -
  • You may then request Ernest Guevarra to merge your Pull Request for you.

  • -
  • Once the pull request is approved and merged you can pull the changes from upstream to your local repo and delete your extra branch(es).

  • -
  • And last but not least: Always write your commit messages in the present tense. Your commit message should describe what the commit, when applied, does to the code – not what you did to the code.

  • -
-
- -
- - - -
- - - -
- -
-

Site built with pkgdown 2.0.7.

-
- -
- - - - - - - - diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html deleted file mode 100644 index 82175a9..0000000 --- a/docs/LICENSE-text.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - -License • odkr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
- - -
YEAR: 2018
-COPYRIGHT HOLDER: Ernest Guevarra, Laura Bramley and Valid International Ltd.
-
- -
- -
- - -
- - -
-

Site built with pkgdown 1.3.0.

-
-
-
- - - - - - diff --git a/docs/LICENSE.html b/docs/LICENSE.html deleted file mode 100644 index 44d82f3..0000000 --- a/docs/LICENSE.html +++ /dev/null @@ -1,278 +0,0 @@ - -GNU General Public License • odkr - - -
-
- - - -
-
- - -
- -

Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>

-

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

-
-

Preamble

-

The GNU General Public License is a free, copyleft license for software and other kinds of works.

-

The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program–to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.

-

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.

-

To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.

-

For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

-

Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.

-

For the developers’ and authors’ protection, the GPL clearly explains that there is no warranty for this free software. For both users’ and authors’ sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.

-

Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users’ freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.

-

Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.

-

The precise terms and conditions for copying, distribution and modification follow.

-
-
-

TERMS AND CONDITIONS

-
-

0. Definitions

-

“This License” refers to version 3 of the GNU General Public License.

-

“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.

-

“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.

-

To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.

-

A “covered work” means either the unmodified Program or a work based on the Program.

-

To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

-

To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

-

An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.

-
-
-

1. Source Code

-

The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.

-

A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

-

The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

-

The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

-

The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.

-

The Corresponding Source for a work in source code form is that same work.

-
-
-

2. Basic Permissions

-

All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.

-

You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

-

Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.

-
-
- -

No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.

-

When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work’s users, your or third parties’ legal rights to forbid circumvention of technological measures.

-
-
-

4. Conveying Verbatim Copies

-

You may convey verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.

-

You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.

-
-
-

5. Conveying Modified Source Versions

-

You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:

-
  • -a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
  • -
  • -b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
  • -
  • -c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
  • -
  • -d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
  • -

A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation’s users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.

-
-
-

6. Conveying Non-Source Forms

-

You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:

-
  • -a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
  • -
  • -b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
  • -
  • -c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
  • -
  • -d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
  • -
  • -e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
  • -

A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.

-

A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.

-

“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.

-

If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).

-

The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.

-

Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.

-
-
-

7. Additional Terms

-

“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.

-

When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.

-

Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:

-
  • -a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
  • -
  • -b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
  • -
  • -c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
  • -
  • -d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
  • -
  • -e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
  • -
  • -f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
  • -

All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.

-

If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.

-

Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

-
-
-

8. Termination

-

You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).

-

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

-

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

-

Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.

-
-
-

9. Acceptance Not Required for Having Copies

-

You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.

-
-
-

10. Automatic Licensing of Downstream Recipients

-

Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.

-

An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party’s predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.

-

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

-
-
-

11. Patents

-

A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor’s “contributor version”.

-

A contributor’s “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.

-

Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor’s essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.

-

In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.

-

If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient’s use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.

-

If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.

-

A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.

-

Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.

-
-
-

12. No Surrender of Others’ Freedom

-

If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.

-
-
-

13. Use with the GNU Affero General Public License

-

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

-
-
-

14. Revised Versions of this License

-

The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

-

Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.

-

If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Program.

-

Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.

-
-
-

15. Disclaimer of Warranty

-

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

-
-
-

16. Limitation of Liability

-

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

-
-
-

17. Interpretation of Sections 15 and 16

-

If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.

-

END OF TERMS AND CONDITIONS

-
-
-
-

How to Apply These Terms to Your New Programs

-

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

-

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

-
<one line to give the program's name and a brief idea of what it does.>
-Copyright (C) 2019 Ernest Guevarra and Laura Bramley
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-

Also add information on how to contact you by electronic and paper mail.

-

If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:

-
odkr Copyright (C) 2019 Ernest Guevarra and Laura Bramley
-This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
-This is free software, and you are welcome to redistribute it
-under certain conditions; type 'show c' for details.
-

The hypothetical commands show w and show c should show the appropriate parts of the General Public License. Of course, your program’s commands might be different; for a GUI interface, you would use an “about box”.

-

You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <http://www.gnu.org/licenses/>.

-

The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.

-
-
- -
- - - -
- - - -
- -
-

Site built with pkgdown 2.0.7.

-
- -
- - - - - - - - diff --git a/docs/NEWS.html b/docs/NEWS.html deleted file mode 100644 index 60e0177..0000000 --- a/docs/NEWS.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - -/Users/ernest/Documents/GitHub/odkr/NEWS.md • odkr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
- - - -
-

odkr v0.1.3

-

In this version, I have implemented the following changes:

-
    -
  • In the DESCRIPTION, all mention of Open Data Kit or ODK I have put in single quotes. In addition, I put in single quotes mentions of ODK software derivatives such as ODK Briefcase and ODK Aggregate to be consistent with format.

  • -
  • In the DESCRIPTION, all mention of Java has been put in single quotes consistent with format for software names.

  • -
  • In the DESCRIPTION, added URL of Open Data Kit in angle brackets for auto-linking

  • -
  • In the various functions, I have corrected mistake of specifying a default write/save directory path. Instead, as advised, I have kept these as empty arguments that user need to specify and placed check statements when user forgets to input directory paths needed.

  • -
  • As consequence of previous, I have re-coded the examples to use tempdir() as suggested to specify a test location for arguments needing directory path inputs

  • -
  • As consequence of previous, I have re-coded tests such that they use the new specified syntax of no default write/save directories.

  • -
-
-
-

odkr v0.1.2

-
    -
  • Resolve issue in testing specifically the test to check whether the function export_data() produces the output test.cscv. Upon checking, logs show that indeed test.csv is produced but the way the test is structured is that depending on build parameters, the test doesn’t look for the test.csv file in the appropriate location. For this, I re-worked both the test call to the function to specify clearly where the output goes and then worked on the actual test to check in the correct directory for test.csv.
  • -
-
-
-

odkr v0.1.1

-
    -
  • Resolve issues with how download.file() handles downloads under the Windows platform.

  • -
  • In previous version, the mode argument in download file was not specified. This was fine for Linux and macOS as downloaded file worked accordingly.

  • -
  • For Windows, without specifying mode, downloaded file is recognised as either invalid or corrupted hence producing the errors noted on testing. Now, the mode argument has been set to "wb" in the get_briefcase() function.

  • -
-
-
-

odkr v0.1.0

-

Iniial release of odkr

-
- - -
- -
- - -
- - -
-

Site built with pkgdown.

-
- -
-
- - - - diff --git a/docs/README.html b/docs/README.html deleted file mode 100644 index 58065d4..0000000 --- a/docs/README.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - -/Users/ernest/Documents/GitHub/odkr/README.md • odkr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
- - -
-

odkr: Open Data Kit (ODK) R API -

-

Project Status: Active – The project has reached a stable, usable state and is being actively developed. CRAN CRAN CRAN Travis AppVeyor Build Status codecov DOI

-

Open Data Kit (ODK) is a free and open-source set of tools which help organizations author, field, and manage mobile data collection solutions. ODK provides an out-of-the-box solution for users to:

-
    -
  • Build a data collection form or survey;
  • -
  • Collect the data on a mobile device and send it to a server; and
  • -
  • Aggregate the collected data on a server and extract it in useful formats.
  • -
-

odkr is a set of interface and utility tools for a useR working with ODK. The package currently has two classes of functions: 1) data processing tools; and, 2) ODK-R interface functions.

-

For data processing, there are currently three functions included which can be used to perform typical data processing tasks associated with working with ODK-collected datasets such as renaming variables in a dataset, expansion of responses to questions that allow more than one answer and merging of nested datasets.

-

For ODK-R interface, included are a set of functions that work via a command line interface with the Java application ODK Briefcase for fetching and pushing Open Data Kit (ODK) forms and their contents. It can be used to gather and aggregate data from the mobile client ODK Collect when there is no internet connectivity, when there is no ODK Aggregate Server set-up or when an ODK Aggregate Server is not preferred. Current production version of ODK Briefcase is v1.8.0 and an executable .jar file can be downloaded from the Open Data Kit website.

-

As of ODK Briefcase version 1.4.4, a scriptable command line interface (CLI) to the Java application has been available. This package provides an R interface to ODK Briefcase via the available CLI to pull forms from a remote ODK Aggregate Server or from a local ODK folder /odk collected from mobile clients. This package has a function that downloads the lastest version of ODK Briefcase (currently v1.8.0) and additional functions that use the CLI of ODK Briefcase to perform data extraction and data export. This package requires Java 8 installed. Jave 8 can be downloaded from here.

-
-

Requirements

-

The ODK-R interface component of this package requires Java 8 to be installed in your computer. There are known issues when using ODK Briefcase with Java 9. If you have Java 9 installed, uninstall (on Windows; on macOS) and then install Java 8. If issues persist even with Java 8, you may need to reconfigure Java. On the terminal, execute the following command:

-
R CMD javareconf
-

If reconfiguring Java still doesn’t solve the issue, you may need to specify JAVA_HOME by executing the following command in terminal:

-
sudo R CMD javareconf JAVA_HOME=/usr/java/default
-
-
-

Installation

-

Install odkr from CRAN:

-
install.packages("odkr")
-library(odkr)
-

Install development version of odkr by installing devtools and then installing odkr package via git

-
# install.packages("devtools")
-devtools::install_github("validmeasures/odkr")
-library(odkr)
-
-
-

Usage

-
-

Data processing functions

-

1. Rename variables of an ODK-collected dataset

-

Depending on how you have designed and structured your ODK form, the standard naming of variables of the output dataset isn’t always desirable for eventual data processing and analysis. For example, for ODK forms that groups questions into modules or sets, ODK would append the grouping name as a prefix to the actual name assigned to a variable usually separated by a / or a ..

-

The renameODK() function extracts the actual variable name assigned when designing the form by removing the prefix grouping labels. This can be done by simply applying the renameODK() to the data.frame as follows:

-
renameODK(sampleData1)
-

2. Expand multiple answer responses

-

For survey questions that allow for multiple answers to be provided, the expandMultChoice() function recodes this into multiple columns with 0/1 coding the number of which is equivalent to the number choices that were selected by respondents. This function can be called as follows:

-
# Expand the choices in variable ws7
-expandMultChoice(answers = renameODK(sampleData2)$ws7)
-

3. Merge nested datasets For ODK forms with a repeat argument, the resulting dataset splits the data into each of the repeats. Often, these multiple datasets need to be merged to a parent dataset (usually data containing common identifiers such as cluster, household). The mergeNestedODK() function merges together these datasets using the ODK-defined KEY and PARENT-KEY variables. The function can be called as follows:

-
mergeNestedODK(parent = renameODK(sampleData1),
-               child = renameODK(sampleData2))
-
-
-

ODK-R interface functions

-

Following are the ODK interface functions in the odkr package. However, before these functions can be utilised, a local copy of ODK Briefcase needs to be downloaded and it would be through this local copy of ODK Briefcase that the other functions will integrate wit ODK databases.

-

To download the latest version of ODK Briefcase, the get_briefcase() function can be utilised as follows:

-
get_briefcase(destination = "~/Desktop")
-

will download the latest version of ODK Briefcase in your Desktop and rename it as odkBriefcase_latest. Specifying the destination directory for ODK Briefcase is required.

-

If it is preferred to save the ODK Briefcase with a different filename, the following command can be issued in R:

-
get_briefcase(destination = "~/Desktop", briefcase = "odkTool")
-

This will save a local copy of ODK Briefcase in the Desktop and name it as odkTool.jar.

-

Downloading ODK Briefcase can be done only once unless you want to update to the latest version of ODK Briefcase from a previously downloaded older version.

-

Once you have downloaded ODK Briefcase, the following functions can be utilised to integrate with ODK databases.

-

1. Pull forms from a remote ODK Aggregate Server If you have an ODK Aggregate Server already setup receiving form submissions from your survey, you can use odkr to pull these forms (not the data) into a local directory.

-

For example, you want to pull ODK form with form id stakeholders from your remote ODK Aggregate Server (i.e., ONA) https://ona.io/validtrial/ to a local directory ~/Desktop using your ODK Aggregate Server account with username validtrial and password zEF-STN-5ze-qom. The pull_remote function from odkr can be used as follows:

-
pull_remote(target = "~Desktop",
-            id = "stakeholders",
-            to = "~/Desktop",
-            from = "https://ona.io/validtrial/"
-            username = "validtrial",
-            password = "zEF-STN-5ze-qom")
-

In this example, you will note that we are using a previously downloaded ODK Briefcase saved in the Desktop. The target specification can be changed to the directory where you have previously saved ODK Briefcase.

-

After the operation has been completed, you would now be able to see a folder named ODK Briefcase Storage on your Desktop containing the forms and instances from the stakholders form on the ODK Aggregate Server.

-

2. Pull forms from a local /odk folder extracted from ODK Collect If you do not have an ODK Aggregate Server setup and plan to use ODK Briefcase as your form aggregator, you will have to extract/copy the /odk folder in your mobile client to a location in your computer (e.g., ~/Desktop) to which you can apply the pull_local function to pull out the forms and instances to a local directory (e.g., ~/Desktop) as follows:

-
pull_local(target = "~/Desktop",
-           id = "stakeholders",
-           to = "~/Desktop",
-           from = "~/Desktop")
-

In this example, you will note that we are using a previously downloaded ODK Briefcase saved in the Desktop. The target specification can be changed to the directory where you have previously saved ODK Briefcase.

-

After the operation has been completed, you would now be able to see a folder named ODK Briefcase Storage on your desktop containing the forms and instances from the stakholders form on the ODK Aggregate Server.

-

3. Export data from an ODK Briefcase Storage into a CSV file If you have pulled your forms from either a remote ODK Aggregate Server or a local /odk folder and now have an ODK Briefcase Storage in one of your local directories, you will probably want to extract the data found in these forms for use in other purposes e.g., data analysis.

-

The export_data function allows you to extract data from a local ODK Briefcase Storage (e.g., found in your ~/Desktop) containing a form stakeholders and save it in a local directory (e.g., ~/Desktop) as a .csv file named test.csv as follows:

-
export_data(target = "~/Desktop",
-            id = "stakeholders",
-            from = "~/Desktop",
-            to = "~/Desktop",
-            filename = "test.csv")
-
-
-
- -
- -
- - -
- - -
-

Site built with pkgdown.

-
- -
-
- - - - diff --git a/docs/authors.html b/docs/authors.html deleted file mode 100644 index 74f1bf9..0000000 --- a/docs/authors.html +++ /dev/null @@ -1,110 +0,0 @@ - -Authors and Citation • odkr - - -
-
- - - -
-
-
- - - -
  • -

    Ernest Guevarra. Author, maintainer, copyright holder. -

    -
  • -
  • -

    Laura Bramley. Author, copyright holder. -

    -
  • -
  • -

    Jeffrey W. Rozelle. Contributor. -

    -
  • -
-
-
-

Citation

- Source: inst/CITATION -
-
- - -

Ernest Guevarra and Laura Bramley (2023). odkr: Open Data Kit (ODK) R API R package version 0.3.3.9000 URL https://rapidsurveys.io/odkr/ DOI 10.5281/zenodo.1170514

-
@Manual{,
-  title = {odkr: Open Data Kit (ODK) R API},
-  author = {{Ernest Guevarra} and {Laura Bramley}},
-  year = {2023},
-  note = {R package version 0.3.3.9000},
-  url = {https://rapidsurveys.io/odkr/},
-  doi = {10.5281/zenodo.1170514},
-}
- -
- -
- - - -
- -
-

Site built with pkgdown 2.0.7.

-
- -
- - - - - - - - diff --git a/docs/bootstrap-toc.css b/docs/bootstrap-toc.css deleted file mode 100644 index 5a85941..0000000 --- a/docs/bootstrap-toc.css +++ /dev/null @@ -1,60 +0,0 @@ -/*! - * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) - * Copyright 2015 Aidan Feldman - * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ - -/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ - -/* All levels of nav */ -nav[data-toggle='toc'] .nav > li > a { - display: block; - padding: 4px 20px; - font-size: 13px; - font-weight: 500; - color: #767676; -} -nav[data-toggle='toc'] .nav > li > a:hover, -nav[data-toggle='toc'] .nav > li > a:focus { - padding-left: 19px; - color: #563d7c; - text-decoration: none; - background-color: transparent; - border-left: 1px solid #563d7c; -} -nav[data-toggle='toc'] .nav > .active > a, -nav[data-toggle='toc'] .nav > .active:hover > a, -nav[data-toggle='toc'] .nav > .active:focus > a { - padding-left: 18px; - font-weight: bold; - color: #563d7c; - background-color: transparent; - border-left: 2px solid #563d7c; -} - -/* Nav: second level (shown on .active) */ -nav[data-toggle='toc'] .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - padding-bottom: 10px; -} -nav[data-toggle='toc'] .nav .nav > li > a { - padding-top: 1px; - padding-bottom: 1px; - padding-left: 30px; - font-size: 12px; - font-weight: normal; -} -nav[data-toggle='toc'] .nav .nav > li > a:hover, -nav[data-toggle='toc'] .nav .nav > li > a:focus { - padding-left: 29px; -} -nav[data-toggle='toc'] .nav .nav > .active > a, -nav[data-toggle='toc'] .nav .nav > .active:hover > a, -nav[data-toggle='toc'] .nav .nav > .active:focus > a { - padding-left: 28px; - font-weight: 500; -} - -/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ -nav[data-toggle='toc'] .nav > .active > ul { - display: block; -} diff --git a/docs/bootstrap-toc.js b/docs/bootstrap-toc.js deleted file mode 100644 index 1cdd573..0000000 --- a/docs/bootstrap-toc.js +++ /dev/null @@ -1,159 +0,0 @@ -/*! - * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) - * Copyright 2015 Aidan Feldman - * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ -(function() { - 'use strict'; - - window.Toc = { - helpers: { - // return all matching elements in the set, or their descendants - findOrFilter: function($el, selector) { - // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ - // http://stackoverflow.com/a/12731439/358804 - var $descendants = $el.find(selector); - return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); - }, - - generateUniqueIdBase: function(el) { - var text = $(el).text(); - var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); - return anchor || el.tagName.toLowerCase(); - }, - - generateUniqueId: function(el) { - var anchorBase = this.generateUniqueIdBase(el); - for (var i = 0; ; i++) { - var anchor = anchorBase; - if (i > 0) { - // add suffix - anchor += '-' + i; - } - // check if ID already exists - if (!document.getElementById(anchor)) { - return anchor; - } - } - }, - - generateAnchor: function(el) { - if (el.id) { - return el.id; - } else { - var anchor = this.generateUniqueId(el); - el.id = anchor; - return anchor; - } - }, - - createNavList: function() { - return $(''); - }, - - createChildNavList: function($parent) { - var $childList = this.createNavList(); - $parent.append($childList); - return $childList; - }, - - generateNavEl: function(anchor, text) { - var $a = $(''); - $a.attr('href', '#' + anchor); - $a.text(text); - var $li = $('
  • '); - $li.append($a); - return $li; - }, - - generateNavItem: function(headingEl) { - var anchor = this.generateAnchor(headingEl); - var $heading = $(headingEl); - var text = $heading.data('toc-text') || $heading.text(); - return this.generateNavEl(anchor, text); - }, - - // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). - getTopLevel: function($scope) { - for (var i = 1; i <= 6; i++) { - var $headings = this.findOrFilter($scope, 'h' + i); - if ($headings.length > 1) { - return i; - } - } - - return 1; - }, - - // returns the elements for the top level, and the next below it - getHeadings: function($scope, topLevel) { - var topSelector = 'h' + topLevel; - - var secondaryLevel = topLevel + 1; - var secondarySelector = 'h' + secondaryLevel; - - return this.findOrFilter($scope, topSelector + ',' + secondarySelector); - }, - - getNavLevel: function(el) { - return parseInt(el.tagName.charAt(1), 10); - }, - - populateNav: function($topContext, topLevel, $headings) { - var $context = $topContext; - var $prevNav; - - var helpers = this; - $headings.each(function(i, el) { - var $newNav = helpers.generateNavItem(el); - var navLevel = helpers.getNavLevel(el); - - // determine the proper $context - if (navLevel === topLevel) { - // use top level - $context = $topContext; - } else if ($prevNav && $context === $topContext) { - // create a new level of the tree and switch to it - $context = helpers.createChildNavList($prevNav); - } // else use the current $context - - $context.append($newNav); - - $prevNav = $newNav; - }); - }, - - parseOps: function(arg) { - var opts; - if (arg.jquery) { - opts = { - $nav: arg - }; - } else { - opts = arg; - } - opts.$scope = opts.$scope || $(document.body); - return opts; - } - }, - - // accepts a jQuery object, or an options object - init: function(opts) { - opts = this.helpers.parseOps(opts); - - // ensure that the data attribute is in place for styling - opts.$nav.attr('data-toggle', 'toc'); - - var $topContext = this.helpers.createChildNavList(opts.$nav); - var topLevel = this.helpers.getTopLevel(opts.$scope); - var $headings = this.helpers.getHeadings(opts.$scope, topLevel); - this.helpers.populateNav($topContext, topLevel, $headings); - } - }; - - $(function() { - $('nav[data-toggle="toc"]').each(function(i, el) { - var $nav = $(el); - Toc.init($nav); - }); - }); -})(); diff --git a/docs/cran-comments.html b/docs/cran-comments.html deleted file mode 100644 index e38a7f7..0000000 --- a/docs/cran-comments.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - -/Users/ernest/Documents/GitHub/odkr/cran-comments.md • odkr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    -
    - - - -
    -

    Re-submission - 9 February 2018

    -

    This is a re-submission. In this version I address the following comments/feedback from CRAN:

    -
      -
    • In the DESCRIPTION, all mention of Open Data Kit or ODK I have put in single quotes. In addition, I put in single quotes mentions of ODK software derivatives such as ODK Briefcase and ODK Aggregate to be consistent with format.

    • -
    • In the DESCRIPTION, all mention of Java has been put in single quotes consistent with format for software names.

    • -
    • In the DESCRIPTION, added URL of Open Data Kit in angle brackets for auto-linking

    • -
    • In the various functions, I have corrected mistake of specifying a default write/save directory path. Instead, as advised, I have kept these as empty arguments that user need to specify and placed check statements when user forgets to input directory paths needed.

    • -
    • As consequence of previous, I have re-coded the examples to use tempdir() as suggested to specify a test location for arguments needing directory path inputs

    • -
    • As consequence of previous, I have re-coded tests such that they use the new specified syntax of no default write/save directories.

    • -
    -

    I have run this newest version with the following results:

    -
    -
    -

    Test environments

    -
      -
    • local OS X install, R 3.4.3
    • -
    • ubuntu 12.04 (on travis-ci), R 3.4.2
    • -
    • local ubuntu 16.04 install, R 3.4.3
    • -
    • win-builder (devel and release)
    • -
    • local windows 7 install, R 3.4.3
    • -
    • windows (on appveyor), R 3.4.3
    • -
    -
    -
    -

    R CMD check results

    -

    0 errors | 0 warnings | 1 note

    -
      -
    • This is a new release.
    • -
    -
    -
    -

    Reverse dependencies

    -

    This is a new release, so there are no reverse/downstream dependencies.

    -
    -
    -
    -

    Re-submission - 8 February 2018

    -

    This is a re-submission. In this version, I address the issue of 1 error in testing specifically the test to check whether the function export_data() produces the output test.cscv. Upon checking, logs show that indeed test.csv is produced but the way the test is structured is that depending on build parameters, the test doesn’t look for the test.csv file in the appropriate location. For this, I re-worked both the test call to the function to specify clearly where the output goes and then worked on the actual test to check in the correct directory for test.csv. I have re-run the checks as per test environments below.

    -
    -
    -

    Test environments

    -
      -
    • local OS X install, R 3.4.3
    • -
    • ubuntu 12.04 (on travis-ci), R 3.4.2
    • -
    • local ubuntu 16.04 install, R 3.4.3
    • -
    • win-builder (devel and release)
    • -
    • local windows 7 install, R 3.4.3
    • -
    • windows (on appveyor), R 3.4.3
    • -
    -
    -
    -

    R CMD check results

    -

    0 errors | 0 warnings | 1 note

    -
      -
    • This is a new release.
    • -
    -
    -
    -

    Reverse dependencies

    -

    This is a new release, so there are no reverse/downstream dependencies.

    -
    -
    -
    -

    Re-submission - 7 February 2018

    -

    This is a re-submission. In this version, I have resolved issues with how download.file() handles downloads under the Windows platform. In the previous version, the mode argument in download file was not specified. This was fine for Linux and macOS as downloaded file worked accordingly. For Windows, without specifying mode, downloaded file is recognised as either invalid or corrupted hence producing the errors noted on testing. Now, the mode argument has been set to "wb" in the get_briefcase() function. Following are the results of the various tests performed for this re-submission.

    -
    -
    -

    Test environments

    -
      -
    • local OS X install, R 3.4.3
    • -
    • ubuntu 12.04 (on travis-ci), R 3.4.2
    • -
    • local ubuntu 16.04 install, R 3.4.3
    • -
    • win-builder (devel and release)
    • -
    • local windows 7 install, R 3.4.3
    • -
    • windows (on appveyor), R 3.4.3
    • -
    -
    -
    -

    R CMD check results

    -

    0 errors | 0 warnings | 1 note

    -
      -
    • This is a new release.
    • -
    -
    -
    -

    Reverse dependencies

    -

    This is a new release, so there are no reverse/downstream dependencies.

    -
    - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown.

    -
    - -
    -
    - - - - diff --git a/docs/docsearch.css b/docs/docsearch.css deleted file mode 100644 index e5f1fe1..0000000 --- a/docs/docsearch.css +++ /dev/null @@ -1,148 +0,0 @@ -/* Docsearch -------------------------------------------------------------- */ -/* - Source: https://github.com/algolia/docsearch/ - License: MIT -*/ - -.algolia-autocomplete { - display: block; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.algolia-autocomplete .ds-dropdown-menu { - width: 100%; - min-width: none; - max-width: none; - padding: .75rem 0; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .1); - box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175); -} - -@media (min-width:768px) { - .algolia-autocomplete .ds-dropdown-menu { - width: 175% - } -} - -.algolia-autocomplete .ds-dropdown-menu::before { - display: none -} - -.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { - padding: 0; - background-color: rgb(255,255,255); - border: 0; - max-height: 80vh; -} - -.algolia-autocomplete .ds-dropdown-menu .ds-suggestions { - margin-top: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion { - padding: 0; - overflow: visible -} - -.algolia-autocomplete .algolia-docsearch-suggestion--category-header { - padding: .125rem 1rem; - margin-top: 0; - font-size: 1.3em; - font-weight: 500; - color: #00008B; - border-bottom: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--wrapper { - float: none; - padding-top: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { - float: none; - width: auto; - padding: 0; - text-align: left -} - -.algolia-autocomplete .algolia-docsearch-suggestion--content { - float: none; - width: auto; - padding: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--content::before { - display: none -} - -.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { - padding-top: .75rem; - margin-top: .75rem; - border-top: 1px solid rgba(0, 0, 0, .1) -} - -.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { - display: block; - padding: .1rem 1rem; - margin-bottom: 0.1; - font-size: 1.0em; - font-weight: 400 - /* display: none */ -} - -.algolia-autocomplete .algolia-docsearch-suggestion--title { - display: block; - padding: .25rem 1rem; - margin-bottom: 0; - font-size: 0.9em; - font-weight: 400 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--text { - padding: 0 1rem .5rem; - margin-top: -.25rem; - font-size: 0.8em; - font-weight: 400; - line-height: 1.25 -} - -.algolia-autocomplete .algolia-docsearch-footer { - width: 110px; - height: 20px; - z-index: 3; - margin-top: 10.66667px; - float: right; - font-size: 0; - line-height: 0; -} - -.algolia-autocomplete .algolia-docsearch-footer--logo { - background-image: url("data:image/svg+xml;utf8,"); - background-repeat: no-repeat; - background-position: 50%; - background-size: 100%; - overflow: hidden; - text-indent: -9000px; - width: 100%; - height: 100%; - display: block; - transform: translate(-8px); -} - -.algolia-autocomplete .algolia-docsearch-suggestion--highlight { - color: #FF8C00; - background: rgba(232, 189, 54, 0.1) -} - - -.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { - box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5) -} - -.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { - background-color: rgba(192, 192, 192, .15) -} diff --git a/docs/docsearch.js b/docs/docsearch.js deleted file mode 100644 index b35504c..0000000 --- a/docs/docsearch.js +++ /dev/null @@ -1,85 +0,0 @@ -$(function() { - - // register a handler to move the focus to the search bar - // upon pressing shift + "/" (i.e. "?") - $(document).on('keydown', function(e) { - if (e.shiftKey && e.keyCode == 191) { - e.preventDefault(); - $("#search-input").focus(); - } - }); - - $(document).ready(function() { - // do keyword highlighting - /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ - var mark = function() { - - var referrer = document.URL ; - var paramKey = "q" ; - - if (referrer.indexOf("?") !== -1) { - var qs = referrer.substr(referrer.indexOf('?') + 1); - var qs_noanchor = qs.split('#')[0]; - var qsa = qs_noanchor.split('&'); - var keyword = ""; - - for (var i = 0; i < qsa.length; i++) { - var currentParam = qsa[i].split('='); - - if (currentParam.length !== 2) { - continue; - } - - if (currentParam[0] == paramKey) { - keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); - } - } - - if (keyword !== "") { - $(".contents").unmark({ - done: function() { - $(".contents").mark(keyword); - } - }); - } - } - }; - - mark(); - }); -}); - -/* Search term highlighting ------------------------------*/ - -function matchedWords(hit) { - var words = []; - - var hierarchy = hit._highlightResult.hierarchy; - // loop to fetch from lvl0, lvl1, etc. - for (var idx in hierarchy) { - words = words.concat(hierarchy[idx].matchedWords); - } - - var content = hit._highlightResult.content; - if (content) { - words = words.concat(content.matchedWords); - } - - // return unique words - var words_uniq = [...new Set(words)]; - return words_uniq; -} - -function updateHitURL(hit) { - - var words = matchedWords(hit); - var url = ""; - - if (hit.anchor) { - url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; - } else { - url = hit.url + '?q=' + escape(words.join(" ")); - } - - return url; -} diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 2145936..0000000 --- a/docs/index.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - -Open Data Kit (ODK) R API • odkr - - - - - - - - - - - - -
    -
    - - - - -
    -
    -
    - - - -

    Open Data Kit (ODK) is a free and open-source set of tools which help organizations author, field, and manage mobile data collection solutions. ODK provides an out-of-the-box solution for users to:

    -
      -
    • Build a data collection form or survey;
    • -
    • Collect the data on a mobile device and send it to a server; and
    • -
    • Aggregate the collected data on a server and extract it in useful formats.
    • -
    -

    odkr is a set of interface and utility tools for a useR working with ODK. The package currently has two classes of functions: 1) data processing tools; and, 2) ODK-R interface functions.

    -

    For data processing, there are currently three functions included which can be used to perform typical data processing tasks associated with working with ODK-collected datasets such as renaming variables in a dataset, expansion of responses to questions that allow more than one answer and merging of nested datasets.

    -

    For ODK-R interface, included are a set of functions that work via a command line interface with the Java application ODK Briefcase for fetching and pushing Open Data Kit (ODK) forms and their contents. It can be used to gather and aggregate data from the mobile client ODK Collect when there is no internet connectivity, when there is no ODK Aggregate Server set-up or when an ODK Aggregate Server is not preferred. Current production version of ODK Briefcase is v1.8.0 and an executable .jar file can be downloaded from the Open Data Kit website.

    -

    As of ODK Briefcase version 1.4.4, a scriptable command line interface (CLI) to the Java application has been available. This package provides an R interface to ODK Briefcase via the available CLI to pull forms from a remote ODK Aggregate Server or from a local ODK folder /odk collected from mobile clients. This package has a function that downloads the latest version of ODK Briefcase (currently v1.8.0) and additional functions that use the CLI of ODK Briefcase to perform data extraction and data export. This package requires Java 8 installed. Java 8 can be downloaded from here.

    -
    -

    Requirements -

    -

    The ODK-R interface component of this package requires Java 8 to be installed in your computer. There are known issues when using ODK Briefcase with Java 9. If you have Java 9 installed, uninstall (on Windows; on macOS) and then install Java 8. If issues persist even with Java 8, you may need to reconfigure Java. On the terminal, execute the following command:

    -
    R CMD javareconf
    -

    If reconfiguring Java still doesn’t solve the issue, you may need to specify JAVA_HOME by executing the following command in terminal:

    -
    sudo R CMD javareconf JAVA_HOME=/usr/java/default
    -
    -
    -

    Installation -

    -

    Install odkr from CRAN:

    - -

    Install development version of odkr by installing devtools and then installing odkr package via git

    -
    -# install.packages("devtools")
    -devtools::install_github("validmeasures/odkr")
    -library(odkr)
    -
    -
    -

    Usage -

    -
    -

    Data processing functions -

    -

    1. Rename variables of an ODK-collected dataset

    -

    Depending on how you have designed and structured your ODK form, the standard naming of variables of the output dataset isn’t always desirable for eventual data processing and analysis. For example, for ODK forms that groups questions into modules or sets, ODK would append the grouping name as a prefix to the actual name assigned to a variable usually separated by a / or a ..

    -

    The renameODK() function extracts the actual variable name assigned when designing the form by removing the prefix grouping labels. This can be done by simply applying the renameODK() to the data.frame as follows:

    -
    -renameODK(sampleData1)
    -

    2. Expand multiple answer responses

    -

    For survey questions that allow for multiple answers to be provided, the expandMultChoice() function recodes this into multiple columns with 0/1 coding the number of which is equivalent to the number choices that were selected by respondents. This function can be called as follows:

    -
    -# Expand the choices in variable ws7
    -expandMultChoice(answers = renameODK(sampleData2)$ws7)
    -

    3. Merge nested datasets For ODK forms with a repeat argument, the resulting dataset splits the data into each of the repeats. Often, these multiple datasets need to be merged to a parent dataset (usually data containing common identifiers such as cluster, household). The mergeNestedODK() function merges together these datasets using the ODK-defined KEY and PARENT-KEY variables. The function can be called as follows:

    -
    -mergeNestedODK(parent = renameODK(sampleData1),
    -               child = renameODK(sampleData2))
    -
    -
    -

    ODK-R interface functions -

    -

    Following are the ODK interface functions in the odkr package. However, before these functions can be utilised, a local copy of ODK Briefcase needs to be downloaded and it would be through this local copy of ODK Briefcase that the other functions will integrate wit ODK databases.

    -

    To download the latest version of ODK Briefcase, the get_briefcase() function can be utilised as follows:

    -
    -get_briefcase(destination = "~/Desktop")
    -

    will download the latest version of ODK Briefcase in your Desktop and rename it as odkBriefcase_latest. Specifying the destination directory for ODK Briefcase is required.

    -

    If it is preferred to save the ODK Briefcase with a different filename, the following command can be issued in R:

    -
    -get_briefcase(destination = "~/Desktop", briefcase = "odkTool")
    -

    This will save a local copy of ODK Briefcase in the Desktop and name it as odkTool.jar.

    -

    Downloading ODK Briefcase can be done only once unless you want to update to the latest version of ODK Briefcase from a previously downloaded older version.

    -

    Once you have downloaded ODK Briefcase, the following functions can be utilised to integrate with ODK databases.

    -

    1. Pull forms from a remote ODK Aggregate Server If you have an ODK Aggregate Server already setup receiving form submissions from your survey, you can use odkr to pull these forms (not the data) into a local directory.

    -

    For example, you want to pull ODK form with form id stakeholders from your remote ODK Aggregate Server (i.e., ONA) https://ona.io/validtrial/ to a local directory ~/Desktop using your ODK Aggregate Server account with username validtrial and password zEF-STN-5ze-qom. The pull_remote function from odkr can be used as follows:

    -
    pull_remote(target = "~Desktop",
    -            id = "stakeholders",
    -            to = "~/Desktop",
    -            from = "https://ona.io/validtrial/"
    -            username = "validtrial",
    -            password = "zEF-STN-5ze-qom")
    -

    In this example, you will note that we are using a previously downloaded ODK Briefcase saved in the Desktop. The target specification can be changed to the directory where you have previously saved ODK Briefcase.

    -

    After the operation has been completed, you would now be able to see a folder named ODK Briefcase Storage on your Desktop containing the forms and instances from the stakeholders form on the ODK Aggregate Server.

    -

    2. Pull forms from a local /odk folder extracted from ODK Collect If you do not have an ODK Aggregate Server setup and plan to use ODK Briefcase as your form aggregator, you will have to extract/copy the /odk folder in your mobile client to a location in your computer (e.g., ~/Desktop) to which you can apply the pull_local function to pull out the forms and instances to a local directory (e.g., ~/Desktop) as follows:

    -
    -pull_local(target = "~/Desktop",
    -           id = "stakeholders",
    -           to = "~/Desktop",
    -           from = "~/Desktop")
    -

    In this example, you will note that we are using a previously downloaded ODK Briefcase saved in the Desktop. The target specification can be changed to the directory where you have previously saved ODK Briefcase.

    -

    After the operation has been completed, you would now be able to see a folder named ODK Briefcase Storage on your desktop containing the forms and instances from the stakeholders form on the ODK Aggregate Server.

    -

    3. Export data from an ODK Briefcase Storage into a CSV file If you have pulled your forms from either a remote ODK Aggregate Server or a local /odk folder and now have an ODK Briefcase Storage in one of your local directories, you will probably want to extract the data found in these forms for use in other purposes e.g., data analysis.

    -

    The export_data function allows you to extract data from a local ODK Briefcase Storage (e.g., found in your ~/Desktop) containing a form stakeholders and save it in a local directory (e.g., ~/Desktop) as a .csv file named test.csv as follows:

    -
    -export_data(target = "~/Desktop",
    -            id = "stakeholders",
    -            from = "~/Desktop",
    -            to = "~/Desktop",
    -            filename = "test.csv")
    -
    -
    -
    -

    Citation -

    -

    If you find the odkr package useful, please cite using the suggested citation provided by a call to the citation function as follows:

    -
    -citation("odkr")
    -#> 
    -#> To cite odkr in publications use:
    -#> 
    -#>   Ernest Guevarra and Laura Bramley (2023). odkr: Open Data Kit (ODK) R
    -#>   API R package version 0.3.3.9000 URL https://rapidsurveys.io/odkr/
    -#>   DOI 10.5281/zenodo.1170514
    -#> 
    -#> A BibTeX entry for LaTeX users is
    -#> 
    -#>   @Manual{,
    -#>     title = {odkr: Open Data Kit (ODK) R API},
    -#>     author = {{Ernest Guevarra} and {Laura Bramley}},
    -#>     year = {2023},
    -#>     note = {R package version 0.3.3.9000},
    -#>     url = {https://rapidsurveys.io/odkr/},
    -#>     doi = {10.5281/zenodo.1170514},
    -#>   }
    -
    -
    -

    Disclaimer -

    -

    odkr is an independently developed R package and is not officially part of ODK and is not developed, recognised and endorsed as a product/service of ODK.

    -
    -
    -

    Community guidelines -

    -

    Feedback, bug reports, and feature requests are welcome; file issues or seek support here. If you would like to contribute to the package, please see our contributing guidelines.

    -

    This project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

    -
    -
    -
    - - -
    - - -
    - -
    -

    -

    Site built with pkgdown 2.0.7.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/jquery.sticky-kit.min.js b/docs/jquery.sticky-kit.min.js deleted file mode 100644 index 1c16271..0000000 --- a/docs/jquery.sticky-kit.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/* Sticky-kit v1.1.2 | WTFPL | Leaf Corcoran 2015 | */ -/* - Source: https://github.com/leafo/sticky-kit - License: MIT -*/ -(function(){var b,f;b=this.jQuery||window.jQuery;f=b(window);b.fn.stick_in_parent=function(d){var A,w,J,n,B,K,p,q,k,E,t;null==d&&(d={});t=d.sticky_class;B=d.inner_scrolling;E=d.recalc_every;k=d.parent;q=d.offset_top;p=d.spacer;w=d.bottoming;null==q&&(q=0);null==k&&(k=void 0);null==B&&(B=!0);null==t&&(t="is_stuck");A=b(document);null==w&&(w=!0);J=function(a,d,n,C,F,u,r,G){var v,H,m,D,I,c,g,x,y,z,h,l;if(!a.data("sticky_kit")){a.data("sticky_kit",!0);I=A.height();g=a.parent();null!=k&&(g=g.closest(k)); -if(!g.length)throw"failed to find stick parent";v=m=!1;(h=null!=p?p&&a.closest(p):b("
    "))&&h.css("position",a.css("position"));x=function(){var c,f,e;if(!G&&(I=A.height(),c=parseInt(g.css("border-top-width"),10),f=parseInt(g.css("padding-top"),10),d=parseInt(g.css("padding-bottom"),10),n=g.offset().top+c+f,C=g.height(),m&&(v=m=!1,null==p&&(a.insertAfter(h),h.detach()),a.css({position:"",top:"",width:"",bottom:""}).removeClass(t),e=!0),F=a.offset().top-(parseInt(a.css("margin-top"),10)||0)-q, -u=a.outerHeight(!0),r=a.css("float"),h&&h.css({width:a.outerWidth(!0),height:u,display:a.css("display"),"vertical-align":a.css("vertical-align"),"float":r}),e))return l()};x();if(u!==C)return D=void 0,c=q,z=E,l=function(){var b,l,e,k;if(!G&&(e=!1,null!=z&&(--z,0>=z&&(z=E,x(),e=!0)),e||A.height()===I||x(),e=f.scrollTop(),null!=D&&(l=e-D),D=e,m?(w&&(k=e+u+c>C+n,v&&!k&&(v=!1,a.css({position:"fixed",bottom:"",top:c}).trigger("sticky_kit:unbottom"))),eb&&!v&&(c-=l,c=Math.max(b-u,c),c=Math.min(q,c),m&&a.css({top:c+"px"})))):e>F&&(m=!0,b={position:"fixed",top:c},b.width="border-box"===a.css("box-sizing")?a.outerWidth()+"px":a.width()+"px",a.css(b).addClass(t),null==p&&(a.after(h),"left"!==r&&"right"!==r||h.append(a)),a.trigger("sticky_kit:stick")),m&&w&&(null==k&&(k=e+u+c>C+n),!v&&k)))return v=!0,"static"===g.css("position")&&g.css({position:"relative"}), -a.css({position:"absolute",bottom:d,top:"auto"}).trigger("sticky_kit:bottom")},y=function(){x();return l()},H=function(){G=!0;f.off("touchmove",l);f.off("scroll",l);f.off("resize",y);b(document.body).off("sticky_kit:recalc",y);a.off("sticky_kit:detach",H);a.removeData("sticky_kit");a.css({position:"",bottom:"",top:"",width:""});g.position("position","");if(m)return null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),h.remove()),a.removeClass(t)},f.on("touchmove",l),f.on("scroll",l),f.on("resize", -y),b(document.body).on("sticky_kit:recalc",y),a.on("sticky_kit:detach",H),setTimeout(l,0)}};n=0;for(K=this.length;n - - - - - diff --git a/docs/news/index.html b/docs/news/index.html deleted file mode 100644 index d96b00c..0000000 --- a/docs/news/index.html +++ /dev/null @@ -1,131 +0,0 @@ - -Changelog • odkr - - -
    -
    - - - -
    -
    - - -
    - -
    -
    - -

    This is the fifth release of odkr (third development release). In this version, the following have been implemented:

    -
    • updated the pull_remote and push_data functions to match new CLI syntax for ODK Briefcase

    • -
    • change license from MIT to GPL3

    • -
    • removed hex logo as per feedback on ODK branding guidelines

    • -
    • general package maintenance (documentation, external site)

    • -
    • addressed issues raised by users with regard to package not installable; error arising from a wrong .Rbuildignore specification

    • -
    -
    - -

    This is the fourth release of odkr (second development release).

    -
    -
    - -

    This is the third release of odkr. This is a developmental release. odkr has been archived in CRAN (see previous release). Current plan is to continue development of odkr outside of CRAN.

    -
    -
    - -

    In this version, I have implemented changes to respond to package issues from CRAN check results.

    -
    • The get_briefcase() function, I changed the download url for ODK Briefcase to the permanent download url provided by the developers at https://github.com/opendatakit/briefcase. This now resolves the issue of apparent download of corrupt jar file.

    • -
    • All briefcase-related functions now include a check on runtime of Java availability and Java version checking for a minimum Java version of Java 8. I followed the testing script specified by CRAN in the Writing R Extensions manual.

    • -
    -
    - -

    In this version, I have implemented the following changes:

    -
    • In the DESCRIPTION, all mention of Open Data Kit or ODK I have put in single quotes. In addition, I put in single quotes mentions of ODK software derivatives such as ODK Briefcase and ODK Aggregate to be consistent with format.

    • -
    • In the DESCRIPTION, all mention of Java has been put in single quotes consistent with format for software names.

    • -
    • In the DESCRIPTION, added URL of Open Data Kit in angle brackets for auto-linking

    • -
    • In the various functions, I have corrected mistake of specifying a default write/save directory path. Instead, as advised, I have kept these as empty arguments that user need to specify and placed check statements when user forgets to input directory paths needed.

    • -
    • As consequence of previous, I have re-coded the examples to use tempdir() as suggested to specify a test location for arguments needing directory path inputs

    • -
    • As consequence of previous, I have re-coded tests such that they use the new specified syntax of no default write/save directories.

    • -
    -
    - -
    • Resolve issue in testing specifically the test to check whether the function export_data() produces the output test.cscv. Upon checking, logs show that indeed test.csv is produced but the way the test is structured is that depending on build parameters, the test doesn’t look for the test.csv file in the appropriate location. For this, I re-worked both the test call to the function to specify clearly where the output goes and then worked on the actual test to check in the correct directory for test.csv.
    • -
    -
    - -
    • Resolve issues with how download.file() handles downloads under the Windows platform.

    • -
    • In previous version, the mode argument in download file was not specified. This was fine for Linux and macOS as downloaded file worked accordingly.

    • -
    • For Windows, without specifying mode, downloaded file is recognised as either invalid or corrupted hence producing the errors noted on testing. Now, the mode argument has been set to "wb" in the get_briefcase() function.

    • -
    -
    - -

    Initial release of odkr

    -
    -
    - - - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/pkgdown.css b/docs/pkgdown.css deleted file mode 100644 index 80ea5b8..0000000 --- a/docs/pkgdown.css +++ /dev/null @@ -1,384 +0,0 @@ -/* Sticky footer */ - -/** - * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ - * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css - * - * .Site -> body > .container - * .Site-content -> body > .container .row - * .footer -> footer - * - * Key idea seems to be to ensure that .container and __all its parents__ - * have height set to 100% - * - */ - -html, body { - height: 100%; -} - -body { - position: relative; -} - -body > .container { - display: flex; - height: 100%; - flex-direction: column; -} - -body > .container .row { - flex: 1 0 auto; -} - -footer { - margin-top: 45px; - padding: 35px 0 36px; - border-top: 1px solid #e5e5e5; - color: #666; - display: flex; - flex-shrink: 0; -} -footer p { - margin-bottom: 0; -} -footer div { - flex: 1; -} -footer .pkgdown { - text-align: right; -} -footer p { - margin-bottom: 0; -} - -img.icon { - float: right; -} - -/* Ensure in-page images don't run outside their container */ -.contents img { - max-width: 100%; - height: auto; -} - -/* Fix bug in bootstrap (only seen in firefox) */ -summary { - display: list-item; -} - -/* Typographic tweaking ---------------------------------*/ - -.contents .page-header { - margin-top: calc(-60px + 1em); -} - -dd { - margin-left: 3em; -} - -/* Section anchors ---------------------------------*/ - -a.anchor { - display: none; - margin-left: 5px; - width: 20px; - height: 20px; - - background-image: url(./link.svg); - background-repeat: no-repeat; - background-size: 20px 20px; - background-position: center center; -} - -h1:hover .anchor, -h2:hover .anchor, -h3:hover .anchor, -h4:hover .anchor, -h5:hover .anchor, -h6:hover .anchor { - display: inline-block; -} - -/* Fixes for fixed navbar --------------------------*/ - -.contents h1, .contents h2, .contents h3, .contents h4 { - padding-top: 60px; - margin-top: -40px; -} - -/* Navbar submenu --------------------------*/ - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu>.dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - border-radius: 0 6px 6px 6px; -} - -.dropdown-submenu:hover>.dropdown-menu { - display: block; -} - -.dropdown-submenu>a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #cccccc; - margin-top: 5px; - margin-right: -10px; -} - -.dropdown-submenu:hover>a:after { - border-left-color: #ffffff; -} - -.dropdown-submenu.pull-left { - float: none; -} - -.dropdown-submenu.pull-left>.dropdown-menu { - left: -100%; - margin-left: 10px; - border-radius: 6px 0 6px 6px; -} - -/* Sidebar --------------------------*/ - -#pkgdown-sidebar { - margin-top: 30px; - position: -webkit-sticky; - position: sticky; - top: 70px; -} - -#pkgdown-sidebar h2 { - font-size: 1.5em; - margin-top: 1em; -} - -#pkgdown-sidebar h2:first-child { - margin-top: 0; -} - -#pkgdown-sidebar .list-unstyled li { - margin-bottom: 0.5em; -} - -/* bootstrap-toc tweaks ------------------------------------------------------*/ - -/* All levels of nav */ - -nav[data-toggle='toc'] .nav > li > a { - padding: 4px 20px 4px 6px; - font-size: 1.5rem; - font-weight: 400; - color: inherit; -} - -nav[data-toggle='toc'] .nav > li > a:hover, -nav[data-toggle='toc'] .nav > li > a:focus { - padding-left: 5px; - color: inherit; - border-left: 1px solid #878787; -} - -nav[data-toggle='toc'] .nav > .active > a, -nav[data-toggle='toc'] .nav > .active:hover > a, -nav[data-toggle='toc'] .nav > .active:focus > a { - padding-left: 5px; - font-size: 1.5rem; - font-weight: 400; - color: inherit; - border-left: 2px solid #878787; -} - -/* Nav: second level (shown on .active) */ - -nav[data-toggle='toc'] .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - padding-bottom: 10px; -} - -nav[data-toggle='toc'] .nav .nav > li > a { - padding-left: 16px; - font-size: 1.35rem; -} - -nav[data-toggle='toc'] .nav .nav > li > a:hover, -nav[data-toggle='toc'] .nav .nav > li > a:focus { - padding-left: 15px; -} - -nav[data-toggle='toc'] .nav .nav > .active > a, -nav[data-toggle='toc'] .nav .nav > .active:hover > a, -nav[data-toggle='toc'] .nav .nav > .active:focus > a { - padding-left: 15px; - font-weight: 500; - font-size: 1.35rem; -} - -/* orcid ------------------------------------------------------------------- */ - -.orcid { - font-size: 16px; - color: #A6CE39; - /* margins are required by official ORCID trademark and display guidelines */ - margin-left:4px; - margin-right:4px; - vertical-align: middle; -} - -/* Reference index & topics ----------------------------------------------- */ - -.ref-index th {font-weight: normal;} - -.ref-index td {vertical-align: top; min-width: 100px} -.ref-index .icon {width: 40px;} -.ref-index .alias {width: 40%;} -.ref-index-icons .alias {width: calc(40% - 40px);} -.ref-index .title {width: 60%;} - -.ref-arguments th {text-align: right; padding-right: 10px;} -.ref-arguments th, .ref-arguments td {vertical-align: top; min-width: 100px} -.ref-arguments .name {width: 20%;} -.ref-arguments .desc {width: 80%;} - -/* Nice scrolling for wide elements --------------------------------------- */ - -table { - display: block; - overflow: auto; -} - -/* Syntax highlighting ---------------------------------------------------- */ - -pre, code, pre code { - background-color: #f8f8f8; - color: #333; -} -pre, pre code { - white-space: pre-wrap; - word-break: break-all; - overflow-wrap: break-word; -} - -pre { - border: 1px solid #eee; -} - -pre .img, pre .r-plt { - margin: 5px 0; -} - -pre .img img, pre .r-plt img { - background-color: #fff; -} - -code a, pre a { - color: #375f84; -} - -a.sourceLine:hover { - text-decoration: none; -} - -.fl {color: #1514b5;} -.fu {color: #000000;} /* function */ -.ch,.st {color: #036a07;} /* string */ -.kw {color: #264D66;} /* keyword */ -.co {color: #888888;} /* comment */ - -.error {font-weight: bolder;} -.warning {font-weight: bolder;} - -/* Clipboard --------------------------*/ - -.hasCopyButton { - position: relative; -} - -.btn-copy-ex { - position: absolute; - right: 0; - top: 0; - visibility: hidden; -} - -.hasCopyButton:hover button.btn-copy-ex { - visibility: visible; -} - -/* headroom.js ------------------------ */ - -.headroom { - will-change: transform; - transition: transform 200ms linear; -} -.headroom--pinned { - transform: translateY(0%); -} -.headroom--unpinned { - transform: translateY(-100%); -} - -/* mark.js ----------------------------*/ - -mark { - background-color: rgba(255, 255, 51, 0.5); - border-bottom: 2px solid rgba(255, 153, 51, 0.3); - padding: 1px; -} - -/* vertical spacing after htmlwidgets */ -.html-widget { - margin-bottom: 10px; -} - -/* fontawesome ------------------------ */ - -.fab { - font-family: "Font Awesome 5 Brands" !important; -} - -/* don't display links in code chunks when printing */ -/* source: https://stackoverflow.com/a/10781533 */ -@media print { - code a:link:after, code a:visited:after { - content: ""; - } -} - -/* Section anchors --------------------------------- - Added in pandoc 2.11: https://github.com/jgm/pandoc-templates/commit/9904bf71 -*/ - -div.csl-bib-body { } -div.csl-entry { - clear: both; -} -.hanging-indent div.csl-entry { - margin-left:2em; - text-indent:-2em; -} -div.csl-left-margin { - min-width:2em; - float:left; -} -div.csl-right-inline { - margin-left:2em; - padding-left:1em; -} -div.csl-indent { - margin-left: 2em; -} diff --git a/docs/pkgdown.js b/docs/pkgdown.js deleted file mode 100644 index 6f0eee4..0000000 --- a/docs/pkgdown.js +++ /dev/null @@ -1,108 +0,0 @@ -/* http://gregfranko.com/blog/jquery-best-practices/ */ -(function($) { - $(function() { - - $('.navbar-fixed-top').headroom(); - - $('body').css('padding-top', $('.navbar').height() + 10); - $(window).resize(function(){ - $('body').css('padding-top', $('.navbar').height() + 10); - }); - - $('[data-toggle="tooltip"]').tooltip(); - - var cur_path = paths(location.pathname); - var links = $("#navbar ul li a"); - var max_length = -1; - var pos = -1; - for (var i = 0; i < links.length; i++) { - if (links[i].getAttribute("href") === "#") - continue; - // Ignore external links - if (links[i].host !== location.host) - continue; - - var nav_path = paths(links[i].pathname); - - var length = prefix_length(nav_path, cur_path); - if (length > max_length) { - max_length = length; - pos = i; - } - } - - // Add class to parent
  • , and enclosing
  • if in dropdown - if (pos >= 0) { - var menu_anchor = $(links[pos]); - menu_anchor.parent().addClass("active"); - menu_anchor.closest("li.dropdown").addClass("active"); - } - }); - - function paths(pathname) { - var pieces = pathname.split("/"); - pieces.shift(); // always starts with / - - var end = pieces[pieces.length - 1]; - if (end === "index.html" || end === "") - pieces.pop(); - return(pieces); - } - - // Returns -1 if not found - function prefix_length(needle, haystack) { - if (needle.length > haystack.length) - return(-1); - - // Special case for length-0 haystack, since for loop won't run - if (haystack.length === 0) { - return(needle.length === 0 ? 0 : -1); - } - - for (var i = 0; i < haystack.length; i++) { - if (needle[i] != haystack[i]) - return(i); - } - - return(haystack.length); - } - - /* Clipboard --------------------------*/ - - function changeTooltipMessage(element, msg) { - var tooltipOriginalTitle=element.getAttribute('data-original-title'); - element.setAttribute('data-original-title', msg); - $(element).tooltip('show'); - element.setAttribute('data-original-title', tooltipOriginalTitle); - } - - if(ClipboardJS.isSupported()) { - $(document).ready(function() { - var copyButton = ""; - - $("div.sourceCode").addClass("hasCopyButton"); - - // Insert copy buttons: - $(copyButton).prependTo(".hasCopyButton"); - - // Initialize tooltips: - $('.btn-copy-ex').tooltip({container: 'body'}); - - // Initialize clipboard: - var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', { - text: function(trigger) { - return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); - } - }); - - clipboardBtnCopies.on('success', function(e) { - changeTooltipMessage(e.trigger, 'Copied!'); - e.clearSelection(); - }); - - clipboardBtnCopies.on('error', function() { - changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); - }); - }); - } -})(window.jQuery || window.$) diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml deleted file mode 100644 index fc336e1..0000000 --- a/docs/pkgdown.yml +++ /dev/null @@ -1,9 +0,0 @@ -pandoc: 2.19.2 -pkgdown: 2.0.7 -pkgdown_sha: ~ -articles: {} -last_built: 2023-01-06T04:13Z -urls: - reference: https://rapidsurveys.io/odkr/reference - article: https://rapidsurveys.io/odkr/articles - diff --git a/docs/reference/Rplot001.png b/docs/reference/Rplot001.png deleted file mode 100644 index 17a358060aed2a86950757bbd25c6f92c08c458f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1011 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|=9Be?5+AI5}0x7m6Z+90U4Fo@(ch>_c&H|6f zVg?3oArNM~bhqvg0|WD9PZ!6KiaBo&GBN^{G%5UFpXcEKVvd5*5Eu=C0SJK)8A6*F U7`aXvEC5;V>FVdQ&MBb@00SN#Z2$lO diff --git a/docs/reference/create_sd.html b/docs/reference/create_sd.html deleted file mode 100644 index 7620287..0000000 --- a/docs/reference/create_sd.html +++ /dev/null @@ -1,107 +0,0 @@ - -Function to create an ODK Briefcase Storage directory — create_sd • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Function to create an ODK Briefcase Storage directory

    -
    - -
    -
    create_sd(path)
    -
    - -
    -

    Arguments

    -
    path
    -

    Directory path on which to create the ODK Briefcase Storage

    - -
    -
    -

    Value

    - - -

    ODK Briefcase Storage directory in the specified path

    -
    - -
    -

    Examples

    -
    create_sd(path = tempdir())
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/expandMultChoice.html b/docs/reference/expandMultChoice.html deleted file mode 100644 index d487e4a..0000000 --- a/docs/reference/expandMultChoice.html +++ /dev/null @@ -1,144 +0,0 @@ - -Function to recode a choose-multiple column where multiple answers are -recorded in the same element (e.g. "ab ac ad", "ef eg eh") to a data frame -with multiple separate 0/1 columns e.g.: — expandMultChoice • odkr - - -
    -
    - - - -
    -
    - - -
    -

      ab  ac  ad  ef  eg  eh
    -   1   1   1   0   0   0
    -   0   0   0   1   1   1

    -
    - -
    -
    expandMultChoice(answers, choices = NULL, naCode = NULL, naQuestion = NULL)
    -
    - -
    -

    Arguments

    -
    answers
    -

    Character vector with given answers (strings containing the -choices)

    - - -
    choices
    -

    (optional) Character vector with choices to be used (each will -become a column). If not supplied, choices will be determined from the -answer parameter, splitting given answers by an empty space -(" ") and finding unique values.

    - - -
    naCode
    -

    (optional) Single element specifying what character code -equates to NA

    - - -
    naQuestion
    -

    (optional) TRUE/FALSE vector of the same length as answers; -in rows where this is false, all columns will be coded as NA

    - -
    -
    -

    Value

    - - -

    a data frame with multiple separate 0/1 columns

    -
    -
    -

    NOTE

    -

    naCode must exist as the only answer in a column (an -answer that contains both a valid answer and the NA code will not be -recognized as NA - instead, the NA code will be output as an -extra answer column (if choices parameter is not given))

    -
    - -
    -

    Examples

    -
    # Expand responses in variable w7 of sampleData2
    -sampleData2 <- renameODK(sampleData2)
    -temp <- expandMultChoice(sampleData2$ws7)
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/expandMultipleChoice.html b/docs/reference/expandMultipleChoice.html deleted file mode 100644 index f2bd1d8..0000000 --- a/docs/reference/expandMultipleChoice.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - - -Function to expand response to a more than one answer multiple choice -question coded as a concatenated string — expandMultipleChoice • odkr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    -
    - - -
    -

    Function to expand response to a more than one answer multiple choice -question coded as a concatenated string

    -
    - -
    expandMultipleChoice(df, x, values, pattern = "", prefix = x,
    -  labels = values, sep = ".")
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    df

    A dataframe containing the vector data that requires expansion.

    x

    Name of variable in df containing vector needing expansion.

    values

    Vector of string values used to create concatenated string -response.

    pattern

    Pattern used to separate values in the concatenated string. -Default is "" for concatenated strings with no separator.

    prefix

    Prefix to names of newly created variables.

    labels

    Vector of names to use for columns of resulting data.frame. -If not specified, columns are named using values.

    sep

    Charater to separate prefix from labels in the -names of newly created variables.

    - -

    Value

    - -

    A data.frame with same rows as df containing columns - corresponding to each newly created variable.

    - -

    Examples

    -
    # NOT RUN {
    -expandMultipleChoice(df = individual,
    -                     x = "mddw1",
    -                     values = as.character(0:18),
    -                     pattern = " ",
    -                     prefix = "mddw",
    -                     sep = "")
    -# }
    -
    -
    - -
    - -
    - - -
    -

    Site built with pkgdown 1.3.0.

    -
    -
    -
    - - - - - - diff --git a/docs/reference/expand_choice.html b/docs/reference/expand_choice.html deleted file mode 100644 index d364ee4..0000000 --- a/docs/reference/expand_choice.html +++ /dev/null @@ -1,156 +0,0 @@ - -Function to expand response to a more than one answer multiple choice -question coded as a concatenated string — expand_choice • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Function to expand response to a more than one answer multiple choice -question coded as a concatenated string

    -
    - -
    -
    expand_choice(
    -  df,
    -  x,
    -  values,
    -  pattern = "",
    -  prefix = x,
    -  labels = values,
    -  sep = "."
    -)
    -
    - -
    -

    Arguments

    -
    df
    -

    A dataframe containing the vector data that requires expansion.

    - - -
    x
    -

    Name of variable in df containing vector needing expansion.

    - - -
    values
    -

    Vector of string values used to create concatenated string -response.

    - - -
    pattern
    -

    Pattern used to separate values in the concatenated string. -Default is "" for concatenated strings with no separator.

    - - -
    prefix
    -

    Prefix to names of newly created variables.

    - - -
    labels
    -

    Vector of names to use for columns of resulting data.frame. -If not specified, columns are named using values.

    - - -
    sep
    -

    Charater to separate prefix from labels in the -names of newly created variables.

    - -
    -
    -

    Value

    - - -

    A data.frame with same rows as df containing columns -corresponding to each newly created variable.

    -
    - -
    -

    Examples

    -
    if (FALSE) {
    -expandMultipleChoice(df = individual,
    -                     x = "mddw1",
    -                     values = as.character(0:18),
    -                     pattern = " ",
    -                     prefix = "mddw",
    -                     sep = "")
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/export_data.html b/docs/reference/export_data.html deleted file mode 100644 index ff1bd69..0000000 --- a/docs/reference/export_data.html +++ /dev/null @@ -1,219 +0,0 @@ - -Export data in CSV format from local ODK Briefcase Storage directory to a -specified destination directory and a specified file name — export_data • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Export data in CSV format from local ODK Briefcase Storage directory to a -specified destination directory and a specified file name

    -
    - -
    -
    export_data(
    -  target = "",
    -  briefcase = "odkBriefcase_latest",
    -  sd = FALSE,
    -  id = "",
    -  from = "",
    -  to = "",
    -  filename = paste(id, "_data.csv", sep = ""),
    -  start = NULL,
    -  end = NULL,
    -  overwrite = FALSE,
    -  exclude = TRUE,
    -  group.names = TRUE,
    -  split = FALSE,
    -  pem = NULL,
    -  pullBefore = FALSE,
    -  includeGeo = FALSE
    -)
    -
    - -
    -

    Arguments

    -
    target
    -

    Path to directory of ODK Briefcase .jar file. Directory -path should match directory path used when calling get_briefcase(). -If ODK Briefcase .jar file was downloaded manually from -https://opendatakit.org, target should match the directory -path where .jar file has been downloaded into.

    - - -
    briefcase
    -

    Filename of the downloaded ODK Briefcase .jar file. -Default is odkBriefcase_latest to match the default filename used -by get_briefcase(). If ODK Briefcase .jar file was -downloaded manually from https://opendatakit.org, filename should -match the default filename used by Open Data Kit which is usually -"ODK Briefcase vX.Y.Z Production.jar" where vX.Y.Z is the version number

    - - -
    sd
    -

    Logical. If TRUE, create an ODK Briefcase Storage in the path -specified by to. Default is FALSE.

    - - -
    id
    -

    Form ID of form to be pulled

    - - -
    from
    -

    Path to source ODK Briefcase Storage from which to extract data. -This should match directory path specified when making a call to -pull_remote() or pull_local()

    - - -
    to
    -

    Destination directory to save output data file

    - - -
    filename
    -

    Filename of output CSV data; default is -paste(id, "_data.csv", sep = "")

    - - -
    start
    -

    Include data from submission dates after (inclusive) this start -date in export to CSV. Date format YYYY-MM-DD or YYYY/MM/DD

    - - -
    end
    -

    Include data from submission dates before (inclusive) this date in -export to CSV. Date format YYYY-MM-DD> or YYYY/MM/DD

    - - -
    overwrite
    -

    Overwrite existing output data in destination -directory with the same filename; default is FALSE

    - - -
    exclude
    -

    Exclude media files on export; default is TRUE

    - - -
    group.names
    -

    Logical. Should group names be removed from column names -on export? Default TRUE.

    - - -
    split
    -

    Logical. Should select multiple fields be split on export? -Default FALSE.

    - - -
    pem
    -

    Path to pem key if using an encrypted form. Null by default.

    - - -
    pullBefore
    -

    Logical. If set to true, pull before export. Default FALSE.

    - - -
    includeGeo
    -

    Logical. If set to true, pull geojson. Default FALSE.

    - -
    -
    -

    Value

    - - -

    CSV file in destination directory containing data from the pulled -forms

    -
    - -
    -

    Examples

    -
    # Export data from a specified ODK Briefcase Storage directory to current
    -# working directory with a filename called "test.csv"
    -if (FALSE) {
    -  dirPath <- tempdir()
    -  get_briefcase(destination = dirPath)
    -  export_data(target = dirPath,
    -              from = dirPath,
    -              to = dirPath,
    -              id = "stakeholders",
    -              filename = "test.csv",
    -              overwrite = TRUE)
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/figures/odkr.png b/docs/reference/figures/odkr.png deleted file mode 100644 index 9da2e3816991fb336e8026d85c54121cd02e5e31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102170 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

    gtOY$|z(1>thUSeOr5UD#b3 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 O00f?{elF{r5}E*6oGxAf diff --git a/docs/reference/get_briefcase.html b/docs/reference/get_briefcase.html deleted file mode 100644 index 0e3bb1c..0000000 --- a/docs/reference/get_briefcase.html +++ /dev/null @@ -1,115 +0,0 @@ - -Updates pre-installed ODK Briefcase jar file to the latest version -downloaded from https://opendatakit.org. — get_briefcase • odkr - - -

    - - - - - - - - diff --git a/docs/reference/get_data.html b/docs/reference/get_data.html deleted file mode 100644 index c46b026..0000000 --- a/docs/reference/get_data.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - - - -Function to get ODK survey datasets and forms from an ODK Aggregate server. — get_data • odkr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - -
    - -
    -
    - - -
    - -

    This function is a wrapper for set of functions from the `odkr` package that -performs pulling of from from local or remote ODK directories and then -exports the embedded data as a comma-separate value (CSV) file.

    - -
    - -
    get_data(id, username, password, start = Sys.Date(), end = Sys.Date(),
    -  filename, overwrite = FALSE, exclude = TRUE, group.names = FALSE,
    -  split = FALSE, rep = FALSE, rep.name = NULL)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    id

    Form ID of form to get data from.

    username

    ODK Aggregate server username credentials.

    password

    ODK Aggregate server password credentials.

    start

    Include data from submission dates after (inclusive) this -start date in export to CSV. Date format <yyyy/MM/dd> and default is -current system date

    end

    Include data from submission dates before (exclusive) this date -in export to CSV. Date format is <yyyy/MM/dd> and default value is -current system date

    filename

    Filename to use for data without the CSV file extension.

    overwrite

    Overwrite existing output data in destination -directory with the same filename; default is FALSE

    exclude

    Exclude media files on export; default is TRUE

    group.names

    Logical. Should group names be removed from column names -on export? Default TRUE.

    split

    Logical. Should select multiple fields be split on export? -Default FALSE.

    rep

    Logical. Does the form have repeat/s? Default FALSE.

    rep.name

    A vector of repeat names to read in the form. Default -is NULL. Must be specified if rep is TRUE.

    - -

    Value

    - -

    If rep is FALSE, a data.frame containing the dataset - corresponding to the form ID specified. If rep is TRUE, a list of - data.frames corresponding to the dataset from the main form of the survey - and each of the repeats in the form.

    - - -

    Examples

    -
    # NOT RUN {
    -  get_data(id = "stakholders",
    -           username = "validtrial",
    -           password = "zEF-STN-5ze-qom",
    -           filename = "test")
    -# }
    -
    -
    - -
    - -
    - - -
    -

    Site built with pkgdown 1.3.0.

    -
    -
    -
    - - - - - - diff --git a/docs/reference/get_help.html b/docs/reference/get_help.html deleted file mode 100644 index 4b6b0d2..0000000 --- a/docs/reference/get_help.html +++ /dev/null @@ -1,124 +0,0 @@ - -Get help with command line interface for ODK Briefcase — get_help • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Get help with command line interface for ODK Briefcase

    -
    - -
    -
    get_help(target = "", briefcase = "odkBriefcase_latest")
    -
    - -
    -

    Arguments

    -
    target
    -

    Path to directory of ODK Briefcase .jar file. Directory -path should match directory path used when calling get_briefcase(). -If ODK Briefcase .jar file was downloaded manually from -https://opendatakit.org, target should match the directory -path where .jar file has been downloaded into.

    - - -
    briefcase
    -

    Filename of the downloaded ODK Briefcase .jar file. -Default is odkBriefcase_latest to match the default filename used -by get_briefcase(). If ODK Briefcase .jar file was -downloaded manually from https://opendatakit.org, filename should -match the default filename used by Open Data Kit which is usually -"ODK Briefcase vX.Y.Z Production.jar" where vX.Y.Z is the version number

    - -
    -
    -

    Value

    - - -

    Help notes on usage of ODK Briefcase via command line interface

    -
    - -
    -

    Examples

    -
    if (FALSE) {
    -  dirPath <- tempdir()
    -  get_briefcase(destination = dirPath)
    -  get_help(target = dirPath)
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/index.html b/docs/reference/index.html deleted file mode 100644 index fe864b1..0000000 --- a/docs/reference/index.html +++ /dev/null @@ -1,170 +0,0 @@ - -Function reference • odkr - - -
    -
    - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Description

    -

    -
    -

    odkr odkr-package

    -

    ODK Briefcase R API

    -

    R-ODK interface via ODK Briefcase

    -

    -
    -

    get_help()

    -

    Get help with command line interface for ODK Briefcase

    -

    get_briefcase()

    -

    Updates pre-installed ODK Briefcase jar file to the latest version -downloaded from https://opendatakit.org.

    -

    create_sd()

    -

    Function to create an ODK Briefcase Storage directory

    -

    pull_local()

    -

    Pull ODK forms from a local ODK folder (/odk) collected from -ODK Collect mobile clients

    -

    pull_remote()

    -

    Pull ODK forms from remote ODK Aggregate via ODK Briefcase

    -

    push_data()

    -

    Push ODK forms from local ODK Briefcase Storage folder to remote ODK Aggregate -via ODK Briefcase

    -

    export_data()

    -

    Export data in CSV format from local ODK Briefcase Storage directory to a -specified destination directory and a specified file name

    -

    Data handling post-export

    -

    -
    -

    expandMultChoice()

    -

    Function to recode a choose-multiple column where multiple answers are -recorded in the same element (e.g. "ab ac ad", "ef eg eh") to a data frame -with multiple separate 0/1 columns e.g.:

    -

    expand_choice()

    -

    Function to expand response to a more than one answer multiple choice -question coded as a concatenated string

    -

    mergeNestedODK()

    -

    Retrieve parent data, matching to a nested (child) dataset by keys of a -nested dataset exported from an ODK Aggregate Server.

    -

    renameODK()

    -

    Rename column names of data exported from an ODK Aggregate Server or from -ODK Briefcase into more usable and human readable variable names.

    -

    Sample data

    -

    -
    -

    sampleData1

    -

    Sample dataset from an impact evaluation study of a mother and child nutrition -programme in Kassala State, Sudan. This dataset contains cluster level data -from the survey.

    -

    sampleData2

    -

    Sample dataset from an impact evaluation study of a mother and child nutrition -programme in Kassala State, Sudan. This dataset contains information from -mother respondents.

    -

    sampleData3

    -

    Sample dataset from an impact evaluation study of a mother and child nutrition -programme in Kassala State, Sudan. This dataset contains information from -child respondents.

    - - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/mergeNestedODK.html b/docs/reference/mergeNestedODK.html deleted file mode 100644 index 2cc67cd..0000000 --- a/docs/reference/mergeNestedODK.html +++ /dev/null @@ -1,140 +0,0 @@ - -Retrieve parent data, matching to a nested (child) dataset by keys of a -nested dataset exported from an ODK Aggregate Server. — mergeNestedODK • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Retrieve parent data, matching to a nested (child) dataset by keys of a -nested dataset exported from an ODK Aggregate Server.

    -
    - -
    -
    mergeNestedODK(
    -  parent,
    -  child,
    -  byPARENT_KEY = TRUE,
    -  removeCols = NULL,
    -  removeRows = NULL
    -)
    -
    - -
    -

    Arguments

    -
    parent
    -

    Data frame of household data

    - - -
    child
    -

    Data frame of child (repeat) data

    - - -
    byPARENT_KEY
    -

    Should data frames be matched based on PARENT_KEY (child) -and KEY (parent) columns? (Currently only option is TRUE)

    - - -
    removeCols
    -

    Character vector of column names to remove from the parent -data frame (optional)

    - - -
    removeRows
    -

    Index of which rows should be removed from child data frame -(optional)

    - -
    -
    -

    Value

    - - -

    Merged dataframe

    -
    - -
    -

    Examples

    -
    # merge sampleData2 and sampleData3
    -x <- renameODK(sampleData2)
    -y <- renameODK(sampleData3)
    -temp <- mergeNestedODK(parent = x, child = y, byPARENT_KEY = FALSE)
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/odkr.html b/docs/reference/odkr.html deleted file mode 100644 index 1d6e9f9..0000000 --- a/docs/reference/odkr.html +++ /dev/null @@ -1,118 +0,0 @@ - -ODK Briefcase R API — odkr • odkr - - -
    -
    - - - -
    -
    - - -
    -

    ODK Briefcase is a Java application for fetching and pushing OpenDataKit -(ODK) forms and their contents. It can be used to gather and aggregate data -from the mobile client ODK Collect when there is no internet connectivity, -when there is no ODK Aggregate Server set-up or when an ODK Aggregate -Server is not preferred. ODK Briefcase executable .jar file can be -downloaded from the OpenDataKit GitHub repo.

    -
    - - -
    -

    Details

    -

    As of ODK Briefcase version 1.4.4, a scriptable command line interface (CLI) -to the Java application has been available. This package provides an R -interface to ODK Briefcase via the available CLI to pull forms from a remote -ODK Aggregate Server or from a local ODK folder /odk collected from -mobile clients. This package requires Java 8 installed. Java 8 can be downloaded -here.

    -
    - -
    -

    Author

    -

    Maintainer: Ernest Guevarra ernestgmd@gmail.com (ORCID) [copyright holder]

    -

    Authors:

    • Laura Bramley [copyright holder]

    • -

    Other contributors:

    - -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/pull_local.html b/docs/reference/pull_local.html deleted file mode 100644 index fbbde58..0000000 --- a/docs/reference/pull_local.html +++ /dev/null @@ -1,159 +0,0 @@ - -Pull ODK forms from a local ODK folder (/odk) collected from -ODK Collect mobile clients — pull_local • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Pull ODK forms from a local ODK folder (/odk) collected from -ODK Collect mobile clients

    -
    - -
    -
    pull_local(
    -  target = "",
    -  briefcase = "odkBriefcase_latest",
    -  id = "",
    -  to = "",
    -  from = "",
    -  pem = NULL
    -)
    -
    - -
    -

    Arguments

    -
    target
    -

    Path to directory of ODK Briefcase .jar file. Directory -path should match directory path used when calling get_briefcase(). -If ODK Briefcase .jar file was downloaded manually from https://opendatakit.org, -target should match the directory path where .jar file has -been downloaded into.

    - - -
    briefcase
    -

    Filename of the downloaded ODK Briefcase .jar file. -Default is odkBriefcase_latest to match the default filename used -by get_briefcase(). If ODK Briefcase .jar file was -downloaded manually from https://opendatakit.org, filename should -match the default filename used by Open Data Kit which is usually -"ODK Briefcase vX.Y.Z Production.jar" where vX.Y.Z is the version number

    - - -
    id
    -

    Form ID of form to be pulled

    - - -
    to
    -

    Destination directory for pulled ODK forms

    - - -
    from
    -

    Source ODK directory (/odk) from ODK Collect mobile client

    - - -
    pem
    -

    If form to be pulled is encrypted, a PEM private key file would be -required to pull forms; default is NULL; if form is encrypted, provide path -to PEM file

    - -
    -
    -

    Value

    - - -

    Folder in destination directory named ODK Briefcase Storage -containing forms pulled from local ODK folder

    -
    - -
    -

    Examples

    -
    # Pull forms from a local ODK folder to current working directory
    -if (FALSE) {
    -  dirPath <- tempdir()
    -  get_briefcase(destination = dirPath)
    -  pull_local(target = dirPath,
    -             id = "stakeholders",
    -             from = system.file("odk", package = "odkr"),
    -             to = dirPath)
    -}
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/pull_remote.html b/docs/reference/pull_remote.html deleted file mode 100644 index 16daeff..0000000 --- a/docs/reference/pull_remote.html +++ /dev/null @@ -1,183 +0,0 @@ - -Pull ODK forms from remote ODK Aggregate via ODK Briefcase — pull_remote • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Pull ODK forms from remote ODK Aggregate via ODK Briefcase

    -
    - -
    -
    pull_remote(
    -  target = "",
    -  briefcase = "odkBriefcase_latest",
    -  sd = FALSE,
    -  id = "",
    -  to = "",
    -  from = "",
    -  include_incomplete = FALSE,
    -  max_http_connections = NULL,
    -  username,
    -  password
    -)
    -
    - -
    -

    Arguments

    -
    target
    -

    Path to directory of ODK Briefcase .jar file. Directory -path should match directory path used when calling get_briefcase(). -If ODK Briefcase .jar file was downloaded manually from -https://opendatakit.org, target should match the directory -path where .jar file has been downloaded into.

    - - -
    briefcase
    -

    Filename of the downloaded ODK Briefcase .jar file. -Default is odkBriefcase_latest to match the default filename used -by get_briefcase(). If ODK Briefcase .jar file was -downloaded manually from https://opendatakit.org, filename should -match the default filename used by Open Data Kit which is usually -"ODK Briefcase vX.Y.Z Production.jar" where vX.Y.Z is the version number

    - - -
    sd
    -

    Logical. If TRUE, create an ODK Briefcase Storage in the path -specified by to. Default is FALSE.

    - - -
    id
    -

    Form ID of form to be pulled

    - - -
    to
    -

    Destination directory for pulled ODK forms

    - - -
    from
    -

    URL of remote ODK Aggregate server to pull ODK forms data from

    - - -
    include_incomplete
    -

    Logical. Should incomplete forms be pulled? Default -to FALSE

    - - -
    max_http_connections
    -

    Integer value for maximum simultaneous HTTP -connections allowed. Defaults to NULL which will allow for the default 8 -simultaneous HTTP connections. Specify this parameter if more simultaneous -connections are required. Maximum value is 32.

    - - -
    username
    -

    Username for account in remote ODK Aggregate server from -which forms are to be pulled

    - - -
    password
    -

    Password for account in remote ODK Aggregate server from -which forms are to be pulled

    - -
    -
    -

    Value

    - - -

    Folder in destination directory named "ODK Briefcase Storage" -containing forms pulled from remote ODK Aggregate server

    -
    - -
    -

    Examples

    -
      # Use latest ODK Briefcase and connect to a test
    -  # remote ODK Aggregate server from ONA (https://ona.io); pulled forms to
    -  # be saved in default location at current working directory
    -  if (FALSE) {
    -  dirPath <- tempdir()
    -  get_briefcase(destination = dirPath)
    -  pull_remote(target = dirPath,
    -              id = "stakeholders",
    -              from = "https://ona.io/validtrial",
    -              to = dirPath,
    -              username = "validtrial",
    -              password = "zEF-STN-5ze-qom")
    -  }
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/push_data.html b/docs/reference/push_data.html deleted file mode 100644 index 349c446..0000000 --- a/docs/reference/push_data.html +++ /dev/null @@ -1,176 +0,0 @@ - -Push ODK forms from local ODK Briefcase Storage folder to remote ODK Aggregate -via ODK Briefcase — push_data • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Push ODK forms from local ODK Briefcase Storage folder to remote ODK Aggregate -via ODK Briefcase

    -
    - -
    -
    push_data(
    -  target = "",
    -  briefcase = "odkBriefcase_latest",
    -  id = "",
    -  to = "",
    -  from = "",
    -  force_send_blank = FALSE,
    -  max_http_connections = NULL,
    -  username,
    -  password
    -)
    -
    - -
    -

    Arguments

    -
    target
    -

    Path to directory of ODK Briefcase .jar file. Directory -path should match directory path used when calling get_briefcase(). -If ODK Briefcase .jar file was downloaded manually from https://opendatakit.org, -target should match the directory path where .jar file has -been downloaded into.

    - - -
    briefcase
    -

    Filename of the downloaded ODK Briefcase .jar file. -Default is odkBriefcase_latest to match the default filename used -by get_briefcase(). If ODK Briefcase .jar file was -downloaded manually from https://opendatakit.org, filename should -match the default filename used by Open Data Kit which is usually -"ODK Briefcase vX.Y.Z Production.jar" where vX.Y.Z is the version number

    - - -
    id
    -

    Form ID of form to push ODK forms data into

    - - -
    to
    -

    URL of remote ODK Aggregate server

    - - -
    from
    -

    Directory containing ODK forms data to push to remote ODK aggregate -server

    - - -
    force_send_blank
    -

    Logical. Should blank form be forced into the -Aggregate instance

    - - -
    max_http_connections
    -

    Integer value for maximum simultaneous HTTP -connections allowed. Defaults to NULL which will allow for the default 8 -simultaneous HTTP connections. Specify this parameter if more simultaneous -connection required

    - - -
    username
    -

    Username for account in remote ODK Aggregate server from -which forms are to be pulled

    - - -
    password
    -

    Password for account in remote ODK Aggregate server from -which forms are to be pulled

    - -
    - -
    -

    Examples

    -
      # Use latest ODK Briefcase and connect to a test
    -  # remote ODK Aggregate server from ONA (https://ona.io) to push ODK forms
    -  # data into
    -  if (FALSE) {
    -  dirPath <- tempdir()
    -  get_briefcase(destination = dirPath)
    -  push_data(target = dirPath,
    -            id = "stakeholders",
    -            to = "https://ona.io/validtrial",
    -            from = dirPath,
    -            username = "validtrial",
    -            password = "zEF-STN-5ze-qom")
    -  }
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/renameODK.html b/docs/reference/renameODK.html deleted file mode 100644 index e9dd63b..0000000 --- a/docs/reference/renameODK.html +++ /dev/null @@ -1,526 +0,0 @@ - -Rename column names of data exported from an ODK Aggregate Server or from -ODK Briefcase into more usable and human readable variable names. — renameODK • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Rename column names of data exported from an ODK Aggregate Server or from -ODK Briefcase into more usable and human readable variable names.

    -
    - -
    -
    renameODK(data, sep = c(".", "-"))
    -
    - -
    -

    Arguments

    -
    data
    -

    Dataframe object of dataset exported from ODK Aggregate Server -or from local ODK directory

    - - -
    sep
    -

    Character value for separator used in variable names. Choices -are "." or "-". Default is ".".

    - -
    -
    -

    Value

    - - -

    Data frame object with renamed variables

    -
    - -
    -

    Examples

    -
    # Rename sampleData1 dataset to remove '.' from variable names
    -names(sampleData1)
    -#>  [1] "admin.admin1.adm1" "admin.admin1.adm2" "admin.ename"      
    -#>  [4] "admin.enameA"      "admin.admin2.adm3" "admin.admin2.adm4"
    -#>  [7] "location.loc1"     "location.loc1a"    "location.loc2"    
    -#> [10] "location.loc3"     "location.loc4"     "hh1"              
    -#> [13] "hh2"               "wcount_count"      "KEY"              
    -#> [16] "PARENT_KEY"       
    -renameODK(sampleData1)
    -#>          adm1 adm2                    ename           enameA adm3 adm4 loc1
    -#> 1  2016-12-24    4  Eman Abdelaleem Zakaria _____ ___ ______    4    6    6
    -#> 2  2016-12-24    7        Hafsa Ali Mohamed    ____ ___ ____    4    4    1
    -#> 3  2016-12-24    5          Fatima Abdallah   _____ ___ ____    3    6    6
    -#> 4  2016-12-24    1            Amani Elkheir      _____ _____    4    5    2
    -#> 5  2016-12-24   20             Zahra Younis        ____ ____    4    7   17
    -#> 6  2016-12-24   13 Mahasin Mohamed Elhassan       _____ ____    4    3   10
    -#> 7  2016-12-24   11             Khadija Adam        _____ ___    4    3   10
    -#> 8  2016-12-24   18          Thuraya Mahmoud        ____ ____    4    6    6
    -#> 9  2016-12-24    5          Fatima Abdallah   _____ ___ ____    4    6    6
    -#> 10 2016-12-24    7        Hafsa Ali Mohamed    ____ ___ ____    4    4    1
    -#> 11 2016-12-24   19            Thuraya Osman       ____ _____    4    5    2
    -#> 12 2016-12-24    7        Hafsa Ali Mohamed    ____ ___ ____    4    4    1
    -#> 13 2016-12-24   13 Mahasin Mohamed Elhassan       _____ ____    4    3   10
    -#> 14 2016-12-24    1            Amani Elkheir      _____ _____    4    5    2
    -#> 15 2016-12-24   18          Thuraya Mahmoud        ____ ____    4    6    6
    -#> 16 2016-12-24   20             Zahra Younis        ____ ____    4    7   17
    -#> 17 2016-12-24    5          Fatima Abdallah   _____ ___ ____    3    6    6
    -#> 18 2016-12-24   11             Khadija Adam        _____ ___    4    3   10
    -#> 19 2016-12-24   19            Thuraya Osman       ____ _____    4    5    2
    -#> 20 2016-12-24   20             Zahra Younis        ____ ____    4    7   17
    -#> 21 2016-12-24    4  Eman Abdelaleem Zakaria _____ ___ ______    4    6    6
    -#> 22 2016-12-24    2             Amira Abdeen     _____ ______    4    7   17
    -#> 23 2016-12-24    5          Fatima Abdallah   _____ ___ ____    4    6    6
    -#> 24 2016-12-24   17      Sabah Salih Ibrahim        ____ ____    4    5    2
    -#> 25 2016-12-24    6            Fatima Alamin     _____ ______    4    3   10
    -#> 26 2016-12-24    7        Hafsa Ali Mohamed    ____ ___ ____    4    4    1
    -#> 27 2016-12-24   18          Thuraya Mahmoud        ____ ____    4    6    6
    -#> 28 2016-12-24    9      Hayat Mohamed Idris        ____ ____    4    1    3
    -#> 29 2016-12-24   13 Mahasin Mohamed Elhassan       _____ ____    4    3   10
    -#> 30 2016-12-24    1            Amani Elkheir      _____ _____    4    5    2
    -#> 31 2016-12-24   15           Omaima Homeida      _____ _____    4    1    3
    -#> 32 2016-12-24   14       Manihil Fadl Alsid  _____ ___ _____    4    4    1
    -#> 33 2016-12-24    7        Hafsa Ali Mohamed    ____ ___ ____    4    4    1
    -#> 34 2016-12-24    2             Amira Abdeen     _____ ______    4    7   17
    -#> 35 2016-12-24   11             Khadija Adam        _____ ___    4    3   10
    -#> 36 2016-12-24    5          Fatima Abdallah   _____ ___ ____    4    6    6
    -#> 37 2016-12-24   17      Sabah Salih Ibrahim        ____ ____    4    1    3
    -#> 38 2016-12-24    6            Fatima Alamin     _____ ______    4    3   10
    -#> 39 2016-12-24    4  Eman Abdelaleem Zakaria _____ ___ ______    4    6    6
    -#> 40 2016-12-24   18          Thuraya Mahmoud        ____ ____    4    6    6
    -#> 41 2016-12-24    9      Hayat Mohamed Idris        ____ ____    4    1    2
    -#> 42 2016-12-24   13 Mahasin Mohamed Elhassan       _____ ____    4    3   10
    -#> 43 2016-12-24    3       Awadia Mohamed Ali       _____ ____    4    4    1
    -#> 44 2016-12-24    5          Fatima Abdallah   _____ ___ ____    4    6    6
    -#> 45 2016-12-24    7        Hafsa Ali Mohamed    ____ ___ ____    4    4    1
    -#> 46 2016-12-24   18          Thuraya Mahmoud        ____ ____    4    6    6
    -#> 47 2016-12-24    5          Fatima Abdallah   _____ ___ ____    4    6    6
    -#> 48 2016-12-24   20             Zahra Younis        ____ ____    4    7   17
    -#> 49 2016-12-24    2             Amira Abdeen     _____ ______    4    7   17
    -#> 50 2016-12-24    9      Hayat Mohamed Idris        ____ ____    4    1    2
    -#>    loc1a loc2 loc3
    -#> 1           2  300
    -#> 2           2 1500
    -#> 3           2  300
    -#> 4           2 1000
    -#> 5           2 1000
    -#> 6           2  150
    -#> 7           2  150
    -#> 8           2  300
    -#> 9           2  300
    -#> 10          2 1500
    -#> 11          2 1000
    -#> 12          2 1500
    -#> 13          2  150
    -#> 14          2 1000
    -#> 15          2  300
    -#> 16          2 1000
    -#> 17          2  300
    -#> 18          2  150
    -#> 19          2 1000
    -#> 20          2 1000
    -#> 21          2  300
    -#> 22          2 1000
    -#> 23          2  300
    -#> 24          2 1000
    -#> 25          2  150
    -#> 26          2 1500
    -#> 27          2  300
    -#> 28          2  100
    -#> 29          2  150
    -#> 30          2 1000
    -#> 31          2  100
    -#> 32          2 1500
    -#> 33          2 1500
    -#> 34          2 1000
    -#> 35          2  150
    -#> 36          2  300
    -#> 37          2  100
    -#> 38          2  150
    -#> 39          2  300
    -#> 40          2  300
    -#> 41          2  100
    -#> 42          2  150
    -#> 43          2 1500
    -#> 44          2  300
    -#> 45          2 1500
    -#> 46          2  300
    -#> 47          2  300
    -#> 48          2 1000
    -#> 49          2 1000
    -#> 50          2  100
    -#>                                                             loc4 hh1 hh2
    -#> 1  15.340707055739859 36.409332161777634 489.62804045528173 20.0  10   1
    -#> 2    15.243085888579019 35.50734621989882 470.2089592535049 25.0   2   1
    -#> 3                                                                 18   1
    -#> 4    14.863367945089205 35.866666603118375 -1.9034378901124 15.0   5   1
    -#> 5    15.468007832681407 36.43122575900205 521.5972869871184 25.0  11   1
    -#> 6    15.858674407154577 36.37231720853207 454.6278015691787 10.0   6   1
    -#> 7                                                                  7   1
    -#> 8     15.344821969653859 36.4123056904053 524.6815485022962 20.0  19   1
    -#> 9   15.342416367468351 36.409081857962754 509.3362386887893 15.0  19   1
    -#> 10   15.242720015920215 35.50733519201448 461.8070472544059 10.0   3   1
    -#> 11   14.863197175573642 35.86928686765128 462.4303112337366 10.0   5   1
    -#> 12  15.242760667735546 35.507351704810645 468.1484348261729 20.0   4   1
    -#> 13                                                                 7   1
    -#> 14                                                                 6   1
    -#> 15   15.344836542984442 36.412303807482466 528.715526827611 25.0  20   1
    -#> 16                                                                12   1
    -#> 17                                                                20   1
    -#> 18    15.859804355349041 36.3697683675118 467.4077677382156 10.0   8   1
    -#> 19   14.86303281506242 35.86851605079117 485.36729476600885 15.0   6   1
    -#> 20                                                                13   1
    -#> 21  15.340626004927747 36.409704627473516 531.3647508798167 15.0  11   1
    -#> 22   15.468108546033292 36.43084176907657 529.8765007127076 20.0  10   1
    -#> 23   15.341934954061003 36.40920065801615 509.6119866305962 20.0  21   1
    -#> 24                                                                 6   1
    -#> 25 15.857047611120107 36.367080908743965 457.56518397387117 25.0  10   1
    -#> 26 15.242564793065485 35.507391095599594 459.71703636739403 15.0   5   1
    -#> 27  15.345046529712212 36.412365115620794 529.1299370490015 10.0  21   1
    -#> 28   15.508623605231321 35.71921247885054 393.2120068129152 10.0   7   1
    -#> 29                                                                 8   1
    -#> 30  14.863073715960105 35.868534599770236 475.1144825257361 25.0   7   1
    -#> 31  15.507955124315897 35.71994656880656 435.78340286947787 15.0   1   1
    -#> 32      15.243935478477816 35.5072483748536 462.23733238969 20.0   2   1
    -#> 33  15.243544853526092 35.504358697667676 318.2708964664489 10.0   6   1
    -#> 34  15.468348778718005 36.430295749140896 527.3553353380412 25.0  11   1
    -#> 35  15.858663032550746 36.37233865660788 453.68353387061507 15.0   9   1
    -#> 36    15.34195942957224 36.40936281884173 542.9970574751496 20.0  22   1
    -#> 37     15.50791103507599 35.71998905828642 443.707229337655 15.0   1   1
    -#> 38                                                                11   1
    -#> 39  15.340625957958748 36.409617272319956 522.9894889993593 15.0  12   1
    -#> 40  15.345026304693446 36.411030820483106 511.9512688117102 15.0  22   1
    -#> 41  15.507898530115408 35.72003764021008 437.78598945215344 10.0   2   1
    -#> 42                                                                 9   1
    -#> 43   15.243843041379714 35.50728506878729 464.1237193001434 20.0   1   1
    -#> 44                                                                23   1
    -#> 45   15.241833111246876 35.50801737078307 461.0185168450698 15.0   7   1
    -#> 46                                                                23   1
    -#> 47    15.34193913638263 36.40920103182395 515.2498174784705 15.0  24   1
    -#> 48   15.468200337263658 36.43041438343925 517.0020088292658 20.0  13   1
    -#> 49    15.4686049946019 36.429610500645374 512.2657940238714 20.0  12   1
    -#> 50                                                                 3   1
    -#>    wcount_count KEY PARENT_KEY
    -#> 1             1   1         -1
    -#> 2             1   2         -1
    -#> 3             1   3         -1
    -#> 4             1   4         -1
    -#> 5             1   5         -1
    -#> 6             1   6         -1
    -#> 7             1   7         -1
    -#> 8             1   8         -1
    -#> 9             1   9         -1
    -#> 10            1  10         -1
    -#> 11            1  11         -1
    -#> 12            1  12         -1
    -#> 13            1  13         -1
    -#> 14            1  14         -1
    -#> 15            1  15         -1
    -#> 16            1  16         -1
    -#> 17            1  17         -1
    -#> 18            1  18         -1
    -#> 19            1  19         -1
    -#> 20            1  20         -1
    -#> 21            1  21         -1
    -#> 22            1  22         -1
    -#> 23            1  23         -1
    -#> 24            1  24         -1
    -#> 25            1  25         -1
    -#> 26            1  26         -1
    -#> 27            1  27         -1
    -#> 28            1  28         -1
    -#> 29            1  29         -1
    -#> 30            1  30         -1
    -#> 31            1  31         -1
    -#> 32            1  32         -1
    -#> 33            1  33         -1
    -#> 34            1  34         -1
    -#> 35            1  35         -1
    -#> 36            1  36         -1
    -#> 37            1  37         -1
    -#> 38            1  38         -1
    -#> 39            1  39         -1
    -#> 40            1  40         -1
    -#> 41            1  41         -1
    -#> 42            1  42         -1
    -#> 43            1  43         -1
    -#> 44            1  44         -1
    -#> 45            1  45         -1
    -#> 46            1  46         -1
    -#> 47            1  47         -1
    -#> 48            1  48         -1
    -#> 49            1  49         -1
    -#> 50            1  50         -1
    -names(sampleData1)
    -#>  [1] "admin.admin1.adm1" "admin.admin1.adm2" "admin.ename"      
    -#>  [4] "admin.enameA"      "admin.admin2.adm3" "admin.admin2.adm4"
    -#>  [7] "location.loc1"     "location.loc1a"    "location.loc2"    
    -#> [10] "location.loc3"     "location.loc4"     "hh1"              
    -#> [13] "hh2"               "wcount_count"      "KEY"              
    -#> [16] "PARENT_KEY"       
    -
    -# Rename sampleData2 dataset
    -names(sampleData2)
    -#>  [1] "wcount.wdata.women.wage"      "wcount.wdata.women.wmarried" 
    -#>  [3] "wcount.wdata.women.wpregnant" "wcount.wdata.women.wedu1"    
    -#>  [5] "wcount.wdata.women.wedu2"     "wcount.wdata.women.wanthro"  
    -#>  [7] "wcount.wdata.women.screening" "wcount.wdata.wash.ws1"       
    -#>  [9] "wcount.wdata.wash.ws2"        "wcount.wdata.wash.ws3"       
    -#> [11] "wcount.wdata.wash.ws4"        "wcount.wdata.wash.ws5"       
    -#> [13] "wcount.wdata.wash.ws6"        "wcount.wdata.wash.ws7"       
    -#> [15] "KEY"                          "PARENT_KEY"                  
    -renameODK(sampleData2)
    -#>    wage wmarried wpregnant wedu1 wedu2 wanthro screening ws1   ws2 ws3 ws4 ws5
    -#> 1    20        1         2     3     1     270         2  13     2  12  NA  NA
    -#> 2    35        1         2     0     9     235         2   9   2 7   1   1   2
    -#> 3    16        2         2     5     1     174         2  12     7  12  NA  NA
    -#> 4    30        1         2     0     9     269         2  12     7  12  NA  NA
    -#> 5    18        2         2     8     2     225         2  13     7  12  NA  NA
    -#> 6    25        1         2     3     1     128         2   8     7  12  NA  NA
    -#> 7    27        1         2     0     9     268         2   8     7  12  NA  NA
    -#> 8    48        1         2     0     9     210         2  12     3  12  NA  NA
    -#> 9    18        1         1     0     1     162         2  12     7  12  NA  NA
    -#> 10   16        2         2     3     1     211         2   9 2 3 7   1   1   2
    -#> 11   46        1         2     0     9     331         2  13     2  12  NA  NA
    -#> 12   38        1         2     0     9     335         2   9 2 3 7   1   1   2
    -#> 13   22        1         2     4     1     227         2   8     1  12  NA  NA
    -#> 14   28        1         2     0     9     258         2  12     7  12  NA  NA
    -#> 15   18        1         2     4     1     196         2  12     3  12  NA  NA
    -#> 16   NA       NA        NA    NA    NA      NA        NA  NA        NA  NA  NA
    -#> 17   16        1         2     0     9     181         2  12     7  12  NA  NA
    -#> 18   15        1         2     0     9     225         2   8     7  12  NA  NA
    -#> 19   16        1         1     5     1     220         2  13     4  12  NA  NA
    -#> 20   25        1         2     0     9     260         2  13     7  12  NA  NA
    -#> 21   35        1         2     3     1     243         2  13     3  12  NA  NA
    -#> 22   18        2         2    11     3     272         2  13     7   2   2   2
    -#> 23   30        1         1     0     9     189         2  12     7  12  NA  NA
    -#> 24   33        1         2     3     1     240         1  13     1   1   1   1
    -#> 25   18        2         2     1     1     235         2  11     7  12  NA  NA
    -#> 26   25        1         2     0     9     245         2   9   2 3   1   1   1
    -#> 27   25        1         2     0     9     287         2  12     3  12  NA  NA
    -#> 28   46        1         2     0     9     194         2   9     7  12  NA  NA
    -#> 29   40        1         2     0     9     233         1   8     7  12  NA  NA
    -#> 30   16        2         2     7     1     179         2  12     7   2   2   2
    -#> 31   19        1         2     0     9     182         1   9     7  12  NA  NA
    -#> 32   23        1         2     0     9     134         2   9     7  10   1   2
    -#> 33   31        1         2     0     9     248         2   9   2 3   2   1   1
    -#> 34   30        1         2     3     1     283         2  13     7  12  NA  NA
    -#> 35   25        1         1     0     9     245         2   8     7  12  NA  NA
    -#> 36   17        2         2     4     1     182         2  12     7  12  NA  NA
    -#> 37   30        1         2     0     9     220         2   9     7  12  NA  NA
    -#> 38   36        1         2     1     1     235         2  10     7  12  NA  NA
    -#> 39   27        1         2     2     9     205         2  13     2  12  NA  NA
    -#> 40   17        2         2     2     1     243         2  12     3  12  NA  NA
    -#> 41   16        2         2     0     9     189         2   9     7  12  NA  NA
    -#> 42   32        1         1     0     9     235         1   8     7  12  NA  NA
    -#> 43   19        1         1     2     1     219         2   9     7  10   1   2
    -#> 44   16        2         2     4     1     221         2  12     7  12  NA  NA
    -#> 45   15        2         2     7     1     225         2   9 2 3 7   1   2   2
    -#> 46   35        1         2     0     9     200         2  12     3  12  NA  NA
    -#> 47   15        2         2     8     2     203         2  12     7  12  NA  NA
    -#> 48   36        1         2     7     1     230         2  13     3  12  NA  NA
    -#> 49   38        1         2    10     3     304         2  13     7   2   2   2
    -#> 50   15        1         2     0     9     185         2   9     7  12  NA  NA
    -#>    ws6                ws7 KEY PARENT_KEY
    -#> 1   NA        1 2 3 4 6 7   1          1
    -#> 2    9          1 2 3 7 8   2          2
    -#> 3   NA            1 2 3 7   3          3
    -#> 4   NA    1 2 3 4 5 6 7 8   4          4
    -#> 5   NA              1 2 8   5          5
    -#> 6   NA            1 2 3 5   6          6
    -#> 7   NA        1 2 3 6 7 8   7          7
    -#> 8   NA              1 2 3   8          8
    -#> 9   NA          1 2 3 7 8   9          9
    -#> 10   9              1 2 3  10         10
    -#> 11  NA              1 2 3  11         11
    -#> 12   1            1 2 3 7  12         12
    -#> 13  NA              1 2 3  13         13
    -#> 14  NA      1 2 3 4 6 7 8  14         14
    -#> 15  NA              1 2 3  15         15
    -#> 16  NA                     16         16
    -#> 17  NA          1 2 3 7 8  17         17
    -#> 18  NA          1 2 3 7 8  18         18
    -#> 19  NA            1 2 3 7  19         19
    -#> 20  NA            1 2 3 5  20         20
    -#> 21  NA          1 2 3 6 7  21         21
    -#> 22   9          1 2 3 7 8  22         22
    -#> 23  NA          1 2 3 6 7  23         23
    -#> 24   1      1 2 3 5 6 7 8  24         24
    -#> 25  NA          1 2 3 5 6  25         25
    -#> 26   1          1 2 3 7 8  26         26
    -#> 27  NA              1 2 3  27         27
    -#> 28  NA            1 2 3 7  28         28
    -#> 29  NA            1 2 3 5  29         29
    -#> 30   9            1 2 3 7  30         30
    -#> 31  NA            1 2 4 7  31         31
    -#> 32   1            1 2 3 6  32         32
    -#> 33   7            1 2 3 8  33         33
    -#> 34  NA            1 2 3 7  34         34
    -#> 35  NA          1 2 3 7 8  35         35
    -#> 36  NA          1 2 3 7 8  36         36
    -#> 37  NA            1 2 3 7  37         37
    -#> 38  NA              1 3 5  38         38
    -#> 39  NA        1 2 3 4 6 7  39         39
    -#> 40  NA              1 2 3  40         40
    -#> 41  NA            1 2 3 7  41         41
    -#> 42  NA            1 2 3 5  42         42
    -#> 43   7   1 2 3 4 6 7 8 10  43         43
    -#> 44  NA            2 3 6 7  44         44
    -#> 45   9 1 2 3 4 5 6 7 8 10  45         45
    -#> 46  NA              1 2 3  46         46
    -#> 47  NA          1 2 3 7 8  47         47
    -#> 48  NA          1 2 3 5 7  48         48
    -#> 49   2          1 2 3 6 7  49         49
    -#> 50  NA            1 2 3 7  50         50
    -names(sampleData2)
    -#>  [1] "wcount.wdata.women.wage"      "wcount.wdata.women.wmarried" 
    -#>  [3] "wcount.wdata.women.wpregnant" "wcount.wdata.women.wedu1"    
    -#>  [5] "wcount.wdata.women.wedu2"     "wcount.wdata.women.wanthro"  
    -#>  [7] "wcount.wdata.women.screening" "wcount.wdata.wash.ws1"       
    -#>  [9] "wcount.wdata.wash.ws2"        "wcount.wdata.wash.ws3"       
    -#> [11] "wcount.wdata.wash.ws4"        "wcount.wdata.wash.ws5"       
    -#> [13] "wcount.wdata.wash.ws6"        "wcount.wdata.wash.ws7"       
    -#> [15] "KEY"                          "PARENT_KEY"                  
    -
    -# Rename sampleData3 dataset
    -names(sampleData3)
    -#> [1] "wcount.wdata.ccount.child.csex"   "wcount.wdata.ccount.child.card"  
    -#> [3] "wcount.wdata.ccount.child.cdob"   "wcount.wdata.ccount.child.cage"  
    -#> [5] "wcount.wdata.ccount.illness.ill1" "wcount.wdata.ccount.illness.ill2"
    -#> [7] "wcount.wdata.ccount.illness.ill3" "KEY"                             
    -#> [9] "PARENT_KEY"                      
    -renameODK(sampleData3)
    -#>    csex card       cdob cage ill1 ill2 ill3 KEY PARENT_KEY
    -#> 1     2    1 2016-06-15    6    2    2    2   1          1
    -#> 2     1    1 2014-08-25   27    2    2    1   2          1
    -#> 3     2    4              16    1    1    2   3          4
    -#> 4     2    1 2013-12-24   36    2    2    2   4          7
    -#> 5     1    4              36    2    2    2   5          9
    -#> 6     2    4              39    2    2    1   6         12
    -#> 7     1    1 2013-04-14   44    2    2    2   7         13
    -#> 8     2    4              42    2    2    2   8         14
    -#> 9     2    3 2015-12-24   12    2    2    2   9         20
    -#> 10    2    3 2013-10-24   38    2    1    2  10         20
    -#> 11    2    1 2014-10-09   26    1    1    1  11         21
    -#> 12    2    4              36    2    2    2  12         23
    -#> 13    1    3 2013-08-20   40    2    2    2  13         24
    -#> 14    2    2 2016-06-24    6    2    2    2  14         25
    -#> 15    2    1 2014-12-24   24    2    2    2  15         25
    -#> 16    1    1 2015-05-18   19    2    2    2  16         26
    -#> 17    2    2 2016-09-24    2    2    2    2  17         31
    -#> 18    1    2 2013-07-06   41    1    1    2  18         32
    -#> 19    1    1 2015-03-19   21    2    2    1  19         33
    -#> 20    1    1 2015-10-08   14    2    2    1  20         34
    -#> 21    1    4              12    2    1    2  21         37
    -#> 22    2    1 2013-12-24   36    2    2    2  22         38
    -#> 23    1    1 2014-02-25   33    2    2    2  23         39
    -#> 24    2    1 2013-06-20   42    2    2    2  24         42
    -#> 25    1    2 2014-09-24   27    2    1    2  25         43
    -#> 26    1    1 2014-09-19   27    2    2    1  26         46
    -#> 27    2    1 2015-11-24   13    2    2    2  27         48
    -#> 28    2    1 2014-11-15   25    2    2    2  28         49
    -#> 29    1    1 2012-01-09   59    2    2    2  29         49
    -#> 30    1    4               3    2    2    2  30         51
    -#> 31    1    4              48    2    2    2  31         51
    -#> 32    1    1 2013-07-21   41    2    2    2  32         52
    -#> 33    2    1 2014-07-24   29    2    2    2  33         52
    -#> 34    2    1 2014-05-19   31    1    2    1  34         53
    -#> 35    1    1 2016-08-28    3    2    2    1  35         53
    -#> 36    1    1 2014-07-07   29    2    2    1  36         54
    -#> 37    2    1 2016-03-15    9    2    2    1  37         54
    -#> 38    1    1 2013-12-24   36    2    2    2  38         55
    -#> 39    1    2 2013-12-17   36    1    1    2  39         56
    -#> 40    2    2 2015-10-20   14    1    2    2  40         56
    -#> 41    2    1 2013-12-24   36    2    1    2  41         57
    -#> 42    1    1 2016-10-24    2    2    2    2  42         57
    -#> 43    1    1 2013-12-24   36    2    2    2  43         59
    -#> 44    2    1 2016-02-29    9    1    2    1  44         60
    -#> 45    1    1 2016-01-01   11    2    2    1  45         62
    -#> 46    2    2 2016-03-28    8    2    2    2  46         64
    -#> 47    2    4              24    2    2    1  47         65
    -#> 48    2    4              39    2    2    2  48         65
    -#> 49    2    1 2014-01-05   35    2    2    1  49         67
    -#> 50    2    1 2014-05-05   31    2    2    2  50         67
    -names(sampleData3)
    -#> [1] "wcount.wdata.ccount.child.csex"   "wcount.wdata.ccount.child.card"  
    -#> [3] "wcount.wdata.ccount.child.cdob"   "wcount.wdata.ccount.child.cage"  
    -#> [5] "wcount.wdata.ccount.illness.ill1" "wcount.wdata.ccount.illness.ill2"
    -#> [7] "wcount.wdata.ccount.illness.ill3" "KEY"                             
    -#> [9] "PARENT_KEY"                      
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/sampleData1.html b/docs/reference/sampleData1.html deleted file mode 100644 index 88c0b7c..0000000 --- a/docs/reference/sampleData1.html +++ /dev/null @@ -1,412 +0,0 @@ - -Sample dataset from an impact evaluation study of a mother and child nutrition -programme in Kassala State, Sudan. This dataset contains cluster level data -from the survey. — sampleData1 • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Sample dataset from an impact evaluation study of a mother and child nutrition -programme in Kassala State, Sudan. This dataset contains cluster level data -from the survey.

    -
    - -
    -
    sampleData1
    -
    - -
    -

    Format

    -

    A data frame with 16 columns and 50 rows:

    admin.admin1.adm1
    -

    Date of survey

    - -
    admin.admin1.adm2
    -

    Enumerator ID

    - -
    admin.enameA
    -

    Name of enumerator (Arabic)

    - -
    admin.ename
    -

    Name of enumerator (English)

    - -
    admin.admin2.adm3
    -

    Survey round number

    - -
    admin.admin2.adm4
    -

    Study area / cluster

    - -
    location.loc1
    -

    Village ID

    - -
    location.loc1a
    -

    Village ID - other

    - -
    location.loc2
    -

    Is village a replacement village

    - -
    location.loc3
    -

    Village population

    - -
    location.loc4
    -

    GPS coordinates

    - -
    hh1
    -

    Household ID

    - -
    hh2
    -

    Number of women aged 15-49 in household

    - -
    wcount_count
    -

    Current woman respondent's ID

    - -
    KEY
    -

    Parent data identifier

    - -
    PARENT_KEY
    -

    Child data identifier

    - - -
    - -
    -

    Examples

    -
    sampleData1
    -#>    admin.admin1.adm1 admin.admin1.adm2              admin.ename
    -#> 1         2016-12-24                 4  Eman Abdelaleem Zakaria
    -#> 2         2016-12-24                 7        Hafsa Ali Mohamed
    -#> 3         2016-12-24                 5          Fatima Abdallah
    -#> 4         2016-12-24                 1            Amani Elkheir
    -#> 5         2016-12-24                20             Zahra Younis
    -#> 6         2016-12-24                13 Mahasin Mohamed Elhassan
    -#> 7         2016-12-24                11             Khadija Adam
    -#> 8         2016-12-24                18          Thuraya Mahmoud
    -#> 9         2016-12-24                 5          Fatima Abdallah
    -#> 10        2016-12-24                 7        Hafsa Ali Mohamed
    -#> 11        2016-12-24                19            Thuraya Osman
    -#> 12        2016-12-24                 7        Hafsa Ali Mohamed
    -#> 13        2016-12-24                13 Mahasin Mohamed Elhassan
    -#> 14        2016-12-24                 1            Amani Elkheir
    -#> 15        2016-12-24                18          Thuraya Mahmoud
    -#> 16        2016-12-24                20             Zahra Younis
    -#> 17        2016-12-24                 5          Fatima Abdallah
    -#> 18        2016-12-24                11             Khadija Adam
    -#> 19        2016-12-24                19            Thuraya Osman
    -#> 20        2016-12-24                20             Zahra Younis
    -#> 21        2016-12-24                 4  Eman Abdelaleem Zakaria
    -#> 22        2016-12-24                 2             Amira Abdeen
    -#> 23        2016-12-24                 5          Fatima Abdallah
    -#> 24        2016-12-24                17      Sabah Salih Ibrahim
    -#> 25        2016-12-24                 6            Fatima Alamin
    -#> 26        2016-12-24                 7        Hafsa Ali Mohamed
    -#> 27        2016-12-24                18          Thuraya Mahmoud
    -#> 28        2016-12-24                 9      Hayat Mohamed Idris
    -#> 29        2016-12-24                13 Mahasin Mohamed Elhassan
    -#> 30        2016-12-24                 1            Amani Elkheir
    -#> 31        2016-12-24                15           Omaima Homeida
    -#> 32        2016-12-24                14       Manihil Fadl Alsid
    -#> 33        2016-12-24                 7        Hafsa Ali Mohamed
    -#> 34        2016-12-24                 2             Amira Abdeen
    -#> 35        2016-12-24                11             Khadija Adam
    -#> 36        2016-12-24                 5          Fatima Abdallah
    -#> 37        2016-12-24                17      Sabah Salih Ibrahim
    -#> 38        2016-12-24                 6            Fatima Alamin
    -#> 39        2016-12-24                 4  Eman Abdelaleem Zakaria
    -#> 40        2016-12-24                18          Thuraya Mahmoud
    -#> 41        2016-12-24                 9      Hayat Mohamed Idris
    -#> 42        2016-12-24                13 Mahasin Mohamed Elhassan
    -#> 43        2016-12-24                 3       Awadia Mohamed Ali
    -#> 44        2016-12-24                 5          Fatima Abdallah
    -#> 45        2016-12-24                 7        Hafsa Ali Mohamed
    -#> 46        2016-12-24                18          Thuraya Mahmoud
    -#> 47        2016-12-24                 5          Fatima Abdallah
    -#> 48        2016-12-24                20             Zahra Younis
    -#> 49        2016-12-24                 2             Amira Abdeen
    -#> 50        2016-12-24                 9      Hayat Mohamed Idris
    -#>        admin.enameA admin.admin2.adm3 admin.admin2.adm4 location.loc1
    -#> 1  _____ ___ ______                 4                 6             6
    -#> 2     ____ ___ ____                 4                 4             1
    -#> 3    _____ ___ ____                 3                 6             6
    -#> 4       _____ _____                 4                 5             2
    -#> 5         ____ ____                 4                 7            17
    -#> 6        _____ ____                 4                 3            10
    -#> 7         _____ ___                 4                 3            10
    -#> 8         ____ ____                 4                 6             6
    -#> 9    _____ ___ ____                 4                 6             6
    -#> 10    ____ ___ ____                 4                 4             1
    -#> 11       ____ _____                 4                 5             2
    -#> 12    ____ ___ ____                 4                 4             1
    -#> 13       _____ ____                 4                 3            10
    -#> 14      _____ _____                 4                 5             2
    -#> 15        ____ ____                 4                 6             6
    -#> 16        ____ ____                 4                 7            17
    -#> 17   _____ ___ ____                 3                 6             6
    -#> 18        _____ ___                 4                 3            10
    -#> 19       ____ _____                 4                 5             2
    -#> 20        ____ ____                 4                 7            17
    -#> 21 _____ ___ ______                 4                 6             6
    -#> 22     _____ ______                 4                 7            17
    -#> 23   _____ ___ ____                 4                 6             6
    -#> 24        ____ ____                 4                 5             2
    -#> 25     _____ ______                 4                 3            10
    -#> 26    ____ ___ ____                 4                 4             1
    -#> 27        ____ ____                 4                 6             6
    -#> 28        ____ ____                 4                 1             3
    -#> 29       _____ ____                 4                 3            10
    -#> 30      _____ _____                 4                 5             2
    -#> 31      _____ _____                 4                 1             3
    -#> 32  _____ ___ _____                 4                 4             1
    -#> 33    ____ ___ ____                 4                 4             1
    -#> 34     _____ ______                 4                 7            17
    -#> 35        _____ ___                 4                 3            10
    -#> 36   _____ ___ ____                 4                 6             6
    -#> 37        ____ ____                 4                 1             3
    -#> 38     _____ ______                 4                 3            10
    -#> 39 _____ ___ ______                 4                 6             6
    -#> 40        ____ ____                 4                 6             6
    -#> 41        ____ ____                 4                 1             2
    -#> 42       _____ ____                 4                 3            10
    -#> 43       _____ ____                 4                 4             1
    -#> 44   _____ ___ ____                 4                 6             6
    -#> 45    ____ ___ ____                 4                 4             1
    -#> 46        ____ ____                 4                 6             6
    -#> 47   _____ ___ ____                 4                 6             6
    -#> 48        ____ ____                 4                 7            17
    -#> 49     _____ ______                 4                 7            17
    -#> 50        ____ ____                 4                 1             2
    -#>    location.loc1a location.loc2 location.loc3
    -#> 1                             2           300
    -#> 2                             2          1500
    -#> 3                             2           300
    -#> 4                             2          1000
    -#> 5                             2          1000
    -#> 6                             2           150
    -#> 7                             2           150
    -#> 8                             2           300
    -#> 9                             2           300
    -#> 10                            2          1500
    -#> 11                            2          1000
    -#> 12                            2          1500
    -#> 13                            2           150
    -#> 14                            2          1000
    -#> 15                            2           300
    -#> 16                            2          1000
    -#> 17                            2           300
    -#> 18                            2           150
    -#> 19                            2          1000
    -#> 20                            2          1000
    -#> 21                            2           300
    -#> 22                            2          1000
    -#> 23                            2           300
    -#> 24                            2          1000
    -#> 25                            2           150
    -#> 26                            2          1500
    -#> 27                            2           300
    -#> 28                            2           100
    -#> 29                            2           150
    -#> 30                            2          1000
    -#> 31                            2           100
    -#> 32                            2          1500
    -#> 33                            2          1500
    -#> 34                            2          1000
    -#> 35                            2           150
    -#> 36                            2           300
    -#> 37                            2           100
    -#> 38                            2           150
    -#> 39                            2           300
    -#> 40                            2           300
    -#> 41                            2           100
    -#> 42                            2           150
    -#> 43                            2          1500
    -#> 44                            2           300
    -#> 45                            2          1500
    -#> 46                            2           300
    -#> 47                            2           300
    -#> 48                            2          1000
    -#> 49                            2          1000
    -#> 50                            2           100
    -#>                                                    location.loc4 hh1 hh2
    -#> 1  15.340707055739859 36.409332161777634 489.62804045528173 20.0  10   1
    -#> 2    15.243085888579019 35.50734621989882 470.2089592535049 25.0   2   1
    -#> 3                                                                 18   1
    -#> 4    14.863367945089205 35.866666603118375 -1.9034378901124 15.0   5   1
    -#> 5    15.468007832681407 36.43122575900205 521.5972869871184 25.0  11   1
    -#> 6    15.858674407154577 36.37231720853207 454.6278015691787 10.0   6   1
    -#> 7                                                                  7   1
    -#> 8     15.344821969653859 36.4123056904053 524.6815485022962 20.0  19   1
    -#> 9   15.342416367468351 36.409081857962754 509.3362386887893 15.0  19   1
    -#> 10   15.242720015920215 35.50733519201448 461.8070472544059 10.0   3   1
    -#> 11   14.863197175573642 35.86928686765128 462.4303112337366 10.0   5   1
    -#> 12  15.242760667735546 35.507351704810645 468.1484348261729 20.0   4   1
    -#> 13                                                                 7   1
    -#> 14                                                                 6   1
    -#> 15   15.344836542984442 36.412303807482466 528.715526827611 25.0  20   1
    -#> 16                                                                12   1
    -#> 17                                                                20   1
    -#> 18    15.859804355349041 36.3697683675118 467.4077677382156 10.0   8   1
    -#> 19   14.86303281506242 35.86851605079117 485.36729476600885 15.0   6   1
    -#> 20                                                                13   1
    -#> 21  15.340626004927747 36.409704627473516 531.3647508798167 15.0  11   1
    -#> 22   15.468108546033292 36.43084176907657 529.8765007127076 20.0  10   1
    -#> 23   15.341934954061003 36.40920065801615 509.6119866305962 20.0  21   1
    -#> 24                                                                 6   1
    -#> 25 15.857047611120107 36.367080908743965 457.56518397387117 25.0  10   1
    -#> 26 15.242564793065485 35.507391095599594 459.71703636739403 15.0   5   1
    -#> 27  15.345046529712212 36.412365115620794 529.1299370490015 10.0  21   1
    -#> 28   15.508623605231321 35.71921247885054 393.2120068129152 10.0   7   1
    -#> 29                                                                 8   1
    -#> 30  14.863073715960105 35.868534599770236 475.1144825257361 25.0   7   1
    -#> 31  15.507955124315897 35.71994656880656 435.78340286947787 15.0   1   1
    -#> 32      15.243935478477816 35.5072483748536 462.23733238969 20.0   2   1
    -#> 33  15.243544853526092 35.504358697667676 318.2708964664489 10.0   6   1
    -#> 34  15.468348778718005 36.430295749140896 527.3553353380412 25.0  11   1
    -#> 35  15.858663032550746 36.37233865660788 453.68353387061507 15.0   9   1
    -#> 36    15.34195942957224 36.40936281884173 542.9970574751496 20.0  22   1
    -#> 37     15.50791103507599 35.71998905828642 443.707229337655 15.0   1   1
    -#> 38                                                                11   1
    -#> 39  15.340625957958748 36.409617272319956 522.9894889993593 15.0  12   1
    -#> 40  15.345026304693446 36.411030820483106 511.9512688117102 15.0  22   1
    -#> 41  15.507898530115408 35.72003764021008 437.78598945215344 10.0   2   1
    -#> 42                                                                 9   1
    -#> 43   15.243843041379714 35.50728506878729 464.1237193001434 20.0   1   1
    -#> 44                                                                23   1
    -#> 45   15.241833111246876 35.50801737078307 461.0185168450698 15.0   7   1
    -#> 46                                                                23   1
    -#> 47    15.34193913638263 36.40920103182395 515.2498174784705 15.0  24   1
    -#> 48   15.468200337263658 36.43041438343925 517.0020088292658 20.0  13   1
    -#> 49    15.4686049946019 36.429610500645374 512.2657940238714 20.0  12   1
    -#> 50                                                                 3   1
    -#>    wcount_count KEY PARENT_KEY
    -#> 1             1   1         -1
    -#> 2             1   2         -1
    -#> 3             1   3         -1
    -#> 4             1   4         -1
    -#> 5             1   5         -1
    -#> 6             1   6         -1
    -#> 7             1   7         -1
    -#> 8             1   8         -1
    -#> 9             1   9         -1
    -#> 10            1  10         -1
    -#> 11            1  11         -1
    -#> 12            1  12         -1
    -#> 13            1  13         -1
    -#> 14            1  14         -1
    -#> 15            1  15         -1
    -#> 16            1  16         -1
    -#> 17            1  17         -1
    -#> 18            1  18         -1
    -#> 19            1  19         -1
    -#> 20            1  20         -1
    -#> 21            1  21         -1
    -#> 22            1  22         -1
    -#> 23            1  23         -1
    -#> 24            1  24         -1
    -#> 25            1  25         -1
    -#> 26            1  26         -1
    -#> 27            1  27         -1
    -#> 28            1  28         -1
    -#> 29            1  29         -1
    -#> 30            1  30         -1
    -#> 31            1  31         -1
    -#> 32            1  32         -1
    -#> 33            1  33         -1
    -#> 34            1  34         -1
    -#> 35            1  35         -1
    -#> 36            1  36         -1
    -#> 37            1  37         -1
    -#> 38            1  38         -1
    -#> 39            1  39         -1
    -#> 40            1  40         -1
    -#> 41            1  41         -1
    -#> 42            1  42         -1
    -#> 43            1  43         -1
    -#> 44            1  44         -1
    -#> 45            1  45         -1
    -#> 46            1  46         -1
    -#> 47            1  47         -1
    -#> 48            1  48         -1
    -#> 49            1  49         -1
    -#> 50            1  50         -1
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/sampleData2.html b/docs/reference/sampleData2.html deleted file mode 100644 index ca41f11..0000000 --- a/docs/reference/sampleData2.html +++ /dev/null @@ -1,467 +0,0 @@ - -Sample dataset from an impact evaluation study of a mother and child nutrition -programme in Kassala State, Sudan. This dataset contains information from -mother respondents. — sampleData2 • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Sample dataset from an impact evaluation study of a mother and child nutrition -programme in Kassala State, Sudan. This dataset contains information from -mother respondents.

    -
    - -
    -
    sampleData2
    -
    - -
    -

    Format

    -

    A data frame with 16 columns and 50 rows:

    wcount.wdata.women.wage
    -

    Mother's age

    - -
    wcount.wdata.women.wmarried
    -

    Is mother married?

    - -
    wcount.wdata.women.wpregnant
    -

    Is mother pregnant?

    - -
    wcount.wdata.women.wedu1
    -

    Mother - number of years of formal -education

    - -
    wcount.wdata.women.wedu2
    -

    Mother - highest educational attainment

    - -
    wcount.wdata.women.wanthro
    -

    Mother's middle upper arm -circumference (mm)

    - -
    wcount.wdata.women.screening
    -

    Has mother's MUAC and oedema been -measured/tested in past month

    - -
    wcount.wdata.wash.ws1
    -

    Source of drinking water

    - -
    wcount.wdata.wash.ws2
    -

    Water treatment

    - -
    wcount.wdata.wash.ws3
    -

    Sanitation facility

    - -
    wcount.wdata.wash.ws4
    -

    Is sanitation facility shared with other -households?

    - -
    wcount.wdata.wash.ws5
    -

    Is sanitation facility used by public

    - -
    wcount.wdata.wash.ws6
    -

    Sanitary disposal of child's faeces

    - -
    wcount.wdata.wash.ws7
    -

    Episodes when handwashing is done

    - -
    KEY
    -

    Parent data identifier

    - -
    PARENT_KEY
    -

    Child data identifier

    - - -
    - -
    -

    Examples

    -
    sampleData2
    -#>    wcount.wdata.women.wage wcount.wdata.women.wmarried
    -#> 1                       20                           1
    -#> 2                       35                           1
    -#> 3                       16                           2
    -#> 4                       30                           1
    -#> 5                       18                           2
    -#> 6                       25                           1
    -#> 7                       27                           1
    -#> 8                       48                           1
    -#> 9                       18                           1
    -#> 10                      16                           2
    -#> 11                      46                           1
    -#> 12                      38                           1
    -#> 13                      22                           1
    -#> 14                      28                           1
    -#> 15                      18                           1
    -#> 16                      NA                          NA
    -#> 17                      16                           1
    -#> 18                      15                           1
    -#> 19                      16                           1
    -#> 20                      25                           1
    -#> 21                      35                           1
    -#> 22                      18                           2
    -#> 23                      30                           1
    -#> 24                      33                           1
    -#> 25                      18                           2
    -#> 26                      25                           1
    -#> 27                      25                           1
    -#> 28                      46                           1
    -#> 29                      40                           1
    -#> 30                      16                           2
    -#> 31                      19                           1
    -#> 32                      23                           1
    -#> 33                      31                           1
    -#> 34                      30                           1
    -#> 35                      25                           1
    -#> 36                      17                           2
    -#> 37                      30                           1
    -#> 38                      36                           1
    -#> 39                      27                           1
    -#> 40                      17                           2
    -#> 41                      16                           2
    -#> 42                      32                           1
    -#> 43                      19                           1
    -#> 44                      16                           2
    -#> 45                      15                           2
    -#> 46                      35                           1
    -#> 47                      15                           2
    -#> 48                      36                           1
    -#> 49                      38                           1
    -#> 50                      15                           1
    -#>    wcount.wdata.women.wpregnant wcount.wdata.women.wedu1
    -#> 1                             2                        3
    -#> 2                             2                        0
    -#> 3                             2                        5
    -#> 4                             2                        0
    -#> 5                             2                        8
    -#> 6                             2                        3
    -#> 7                             2                        0
    -#> 8                             2                        0
    -#> 9                             1                        0
    -#> 10                            2                        3
    -#> 11                            2                        0
    -#> 12                            2                        0
    -#> 13                            2                        4
    -#> 14                            2                        0
    -#> 15                            2                        4
    -#> 16                           NA                       NA
    -#> 17                            2                        0
    -#> 18                            2                        0
    -#> 19                            1                        5
    -#> 20                            2                        0
    -#> 21                            2                        3
    -#> 22                            2                       11
    -#> 23                            1                        0
    -#> 24                            2                        3
    -#> 25                            2                        1
    -#> 26                            2                        0
    -#> 27                            2                        0
    -#> 28                            2                        0
    -#> 29                            2                        0
    -#> 30                            2                        7
    -#> 31                            2                        0
    -#> 32                            2                        0
    -#> 33                            2                        0
    -#> 34                            2                        3
    -#> 35                            1                        0
    -#> 36                            2                        4
    -#> 37                            2                        0
    -#> 38                            2                        1
    -#> 39                            2                        2
    -#> 40                            2                        2
    -#> 41                            2                        0
    -#> 42                            1                        0
    -#> 43                            1                        2
    -#> 44                            2                        4
    -#> 45                            2                        7
    -#> 46                            2                        0
    -#> 47                            2                        8
    -#> 48                            2                        7
    -#> 49                            2                       10
    -#> 50                            2                        0
    -#>    wcount.wdata.women.wedu2 wcount.wdata.women.wanthro
    -#> 1                         1                        270
    -#> 2                         9                        235
    -#> 3                         1                        174
    -#> 4                         9                        269
    -#> 5                         2                        225
    -#> 6                         1                        128
    -#> 7                         9                        268
    -#> 8                         9                        210
    -#> 9                         1                        162
    -#> 10                        1                        211
    -#> 11                        9                        331
    -#> 12                        9                        335
    -#> 13                        1                        227
    -#> 14                        9                        258
    -#> 15                        1                        196
    -#> 16                       NA                         NA
    -#> 17                        9                        181
    -#> 18                        9                        225
    -#> 19                        1                        220
    -#> 20                        9                        260
    -#> 21                        1                        243
    -#> 22                        3                        272
    -#> 23                        9                        189
    -#> 24                        1                        240
    -#> 25                        1                        235
    -#> 26                        9                        245
    -#> 27                        9                        287
    -#> 28                        9                        194
    -#> 29                        9                        233
    -#> 30                        1                        179
    -#> 31                        9                        182
    -#> 32                        9                        134
    -#> 33                        9                        248
    -#> 34                        1                        283
    -#> 35                        9                        245
    -#> 36                        1                        182
    -#> 37                        9                        220
    -#> 38                        1                        235
    -#> 39                        9                        205
    -#> 40                        1                        243
    -#> 41                        9                        189
    -#> 42                        9                        235
    -#> 43                        1                        219
    -#> 44                        1                        221
    -#> 45                        1                        225
    -#> 46                        9                        200
    -#> 47                        2                        203
    -#> 48                        1                        230
    -#> 49                        3                        304
    -#> 50                        9                        185
    -#>    wcount.wdata.women.screening wcount.wdata.wash.ws1 wcount.wdata.wash.ws2
    -#> 1                             2                    13                     2
    -#> 2                             2                     9                   2 7
    -#> 3                             2                    12                     7
    -#> 4                             2                    12                     7
    -#> 5                             2                    13                     7
    -#> 6                             2                     8                     7
    -#> 7                             2                     8                     7
    -#> 8                             2                    12                     3
    -#> 9                             2                    12                     7
    -#> 10                            2                     9                 2 3 7
    -#> 11                            2                    13                     2
    -#> 12                            2                     9                 2 3 7
    -#> 13                            2                     8                     1
    -#> 14                            2                    12                     7
    -#> 15                            2                    12                     3
    -#> 16                           NA                    NA                      
    -#> 17                            2                    12                     7
    -#> 18                            2                     8                     7
    -#> 19                            2                    13                     4
    -#> 20                            2                    13                     7
    -#> 21                            2                    13                     3
    -#> 22                            2                    13                     7
    -#> 23                            2                    12                     7
    -#> 24                            1                    13                     1
    -#> 25                            2                    11                     7
    -#> 26                            2                     9                   2 3
    -#> 27                            2                    12                     3
    -#> 28                            2                     9                     7
    -#> 29                            1                     8                     7
    -#> 30                            2                    12                     7
    -#> 31                            1                     9                     7
    -#> 32                            2                     9                     7
    -#> 33                            2                     9                   2 3
    -#> 34                            2                    13                     7
    -#> 35                            2                     8                     7
    -#> 36                            2                    12                     7
    -#> 37                            2                     9                     7
    -#> 38                            2                    10                     7
    -#> 39                            2                    13                     2
    -#> 40                            2                    12                     3
    -#> 41                            2                     9                     7
    -#> 42                            1                     8                     7
    -#> 43                            2                     9                     7
    -#> 44                            2                    12                     7
    -#> 45                            2                     9                 2 3 7
    -#> 46                            2                    12                     3
    -#> 47                            2                    12                     7
    -#> 48                            2                    13                     3
    -#> 49                            2                    13                     7
    -#> 50                            2                     9                     7
    -#>    wcount.wdata.wash.ws3 wcount.wdata.wash.ws4 wcount.wdata.wash.ws5
    -#> 1                     12                    NA                    NA
    -#> 2                      1                     1                     2
    -#> 3                     12                    NA                    NA
    -#> 4                     12                    NA                    NA
    -#> 5                     12                    NA                    NA
    -#> 6                     12                    NA                    NA
    -#> 7                     12                    NA                    NA
    -#> 8                     12                    NA                    NA
    -#> 9                     12                    NA                    NA
    -#> 10                     1                     1                     2
    -#> 11                    12                    NA                    NA
    -#> 12                     1                     1                     2
    -#> 13                    12                    NA                    NA
    -#> 14                    12                    NA                    NA
    -#> 15                    12                    NA                    NA
    -#> 16                    NA                    NA                    NA
    -#> 17                    12                    NA                    NA
    -#> 18                    12                    NA                    NA
    -#> 19                    12                    NA                    NA
    -#> 20                    12                    NA                    NA
    -#> 21                    12                    NA                    NA
    -#> 22                     2                     2                     2
    -#> 23                    12                    NA                    NA
    -#> 24                     1                     1                     1
    -#> 25                    12                    NA                    NA
    -#> 26                     1                     1                     1
    -#> 27                    12                    NA                    NA
    -#> 28                    12                    NA                    NA
    -#> 29                    12                    NA                    NA
    -#> 30                     2                     2                     2
    -#> 31                    12                    NA                    NA
    -#> 32                    10                     1                     2
    -#> 33                     2                     1                     1
    -#> 34                    12                    NA                    NA
    -#> 35                    12                    NA                    NA
    -#> 36                    12                    NA                    NA
    -#> 37                    12                    NA                    NA
    -#> 38                    12                    NA                    NA
    -#> 39                    12                    NA                    NA
    -#> 40                    12                    NA                    NA
    -#> 41                    12                    NA                    NA
    -#> 42                    12                    NA                    NA
    -#> 43                    10                     1                     2
    -#> 44                    12                    NA                    NA
    -#> 45                     1                     2                     2
    -#> 46                    12                    NA                    NA
    -#> 47                    12                    NA                    NA
    -#> 48                    12                    NA                    NA
    -#> 49                     2                     2                     2
    -#> 50                    12                    NA                    NA
    -#>    wcount.wdata.wash.ws6 wcount.wdata.wash.ws7 KEY PARENT_KEY
    -#> 1                     NA           1 2 3 4 6 7   1          1
    -#> 2                      9             1 2 3 7 8   2          2
    -#> 3                     NA               1 2 3 7   3          3
    -#> 4                     NA       1 2 3 4 5 6 7 8   4          4
    -#> 5                     NA                 1 2 8   5          5
    -#> 6                     NA               1 2 3 5   6          6
    -#> 7                     NA           1 2 3 6 7 8   7          7
    -#> 8                     NA                 1 2 3   8          8
    -#> 9                     NA             1 2 3 7 8   9          9
    -#> 10                     9                 1 2 3  10         10
    -#> 11                    NA                 1 2 3  11         11
    -#> 12                     1               1 2 3 7  12         12
    -#> 13                    NA                 1 2 3  13         13
    -#> 14                    NA         1 2 3 4 6 7 8  14         14
    -#> 15                    NA                 1 2 3  15         15
    -#> 16                    NA                        16         16
    -#> 17                    NA             1 2 3 7 8  17         17
    -#> 18                    NA             1 2 3 7 8  18         18
    -#> 19                    NA               1 2 3 7  19         19
    -#> 20                    NA               1 2 3 5  20         20
    -#> 21                    NA             1 2 3 6 7  21         21
    -#> 22                     9             1 2 3 7 8  22         22
    -#> 23                    NA             1 2 3 6 7  23         23
    -#> 24                     1         1 2 3 5 6 7 8  24         24
    -#> 25                    NA             1 2 3 5 6  25         25
    -#> 26                     1             1 2 3 7 8  26         26
    -#> 27                    NA                 1 2 3  27         27
    -#> 28                    NA               1 2 3 7  28         28
    -#> 29                    NA               1 2 3 5  29         29
    -#> 30                     9               1 2 3 7  30         30
    -#> 31                    NA               1 2 4 7  31         31
    -#> 32                     1               1 2 3 6  32         32
    -#> 33                     7               1 2 3 8  33         33
    -#> 34                    NA               1 2 3 7  34         34
    -#> 35                    NA             1 2 3 7 8  35         35
    -#> 36                    NA             1 2 3 7 8  36         36
    -#> 37                    NA               1 2 3 7  37         37
    -#> 38                    NA                 1 3 5  38         38
    -#> 39                    NA           1 2 3 4 6 7  39         39
    -#> 40                    NA                 1 2 3  40         40
    -#> 41                    NA               1 2 3 7  41         41
    -#> 42                    NA               1 2 3 5  42         42
    -#> 43                     7      1 2 3 4 6 7 8 10  43         43
    -#> 44                    NA               2 3 6 7  44         44
    -#> 45                     9    1 2 3 4 5 6 7 8 10  45         45
    -#> 46                    NA                 1 2 3  46         46
    -#> 47                    NA             1 2 3 7 8  47         47
    -#> 48                    NA             1 2 3 5 7  48         48
    -#> 49                     2             1 2 3 6 7  49         49
    -#> 50                    NA               1 2 3 7  50         50
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/reference/sampleData3.html b/docs/reference/sampleData3.html deleted file mode 100644 index 7b5eb62..0000000 --- a/docs/reference/sampleData3.html +++ /dev/null @@ -1,344 +0,0 @@ - -Sample dataset from an impact evaluation study of a mother and child nutrition -programme in Kassala State, Sudan. This dataset contains information from -child respondents. — sampleData3 • odkr - - -
    -
    - - - -
    -
    - - -
    -

    Sample dataset from an impact evaluation study of a mother and child nutrition -programme in Kassala State, Sudan. This dataset contains information from -child respondents.

    -
    - -
    -
    sampleData3
    -
    - -
    -

    Format

    -

    A data frame with 9 columns and 50 rows:

    wcount.wdata.ccount.child.csex
    -

    Child's gender

    - -
    wcount.wdata.ccount.child.card
    -

    Does child have an immunisation -card?

    - -
    wcount.wdata.ccount.child.cdob
    -

    Child's date of birth

    - -
    wcount.wdata.ccount.child.cage
    -

    Age of child

    - -
    wcount.wdata.ccount.illness.ill1
    -

    Has child had diarrhoea in the -past 2 weeks

    - -
    wcount.wdata.ccount.illness.ill2
    -

    Has child had fever in the past -2 weeks

    - -
    wcount.wdata.ccount.illness.ill3
    -

    Has child had cough in the past -2 weeks

    - -
    KEY
    -

    Parent data identifier

    - -
    PARENT_KEY
    -

    Child data identifier

    - - -
    - -
    -

    Examples

    -
    sampleData3
    -#>    wcount.wdata.ccount.child.csex wcount.wdata.ccount.child.card
    -#> 1                               2                              1
    -#> 2                               1                              1
    -#> 3                               2                              4
    -#> 4                               2                              1
    -#> 5                               1                              4
    -#> 6                               2                              4
    -#> 7                               1                              1
    -#> 8                               2                              4
    -#> 9                               2                              3
    -#> 10                              2                              3
    -#> 11                              2                              1
    -#> 12                              2                              4
    -#> 13                              1                              3
    -#> 14                              2                              2
    -#> 15                              2                              1
    -#> 16                              1                              1
    -#> 17                              2                              2
    -#> 18                              1                              2
    -#> 19                              1                              1
    -#> 20                              1                              1
    -#> 21                              1                              4
    -#> 22                              2                              1
    -#> 23                              1                              1
    -#> 24                              2                              1
    -#> 25                              1                              2
    -#> 26                              1                              1
    -#> 27                              2                              1
    -#> 28                              2                              1
    -#> 29                              1                              1
    -#> 30                              1                              4
    -#> 31                              1                              4
    -#> 32                              1                              1
    -#> 33                              2                              1
    -#> 34                              2                              1
    -#> 35                              1                              1
    -#> 36                              1                              1
    -#> 37                              2                              1
    -#> 38                              1                              1
    -#> 39                              1                              2
    -#> 40                              2                              2
    -#> 41                              2                              1
    -#> 42                              1                              1
    -#> 43                              1                              1
    -#> 44                              2                              1
    -#> 45                              1                              1
    -#> 46                              2                              2
    -#> 47                              2                              4
    -#> 48                              2                              4
    -#> 49                              2                              1
    -#> 50                              2                              1
    -#>    wcount.wdata.ccount.child.cdob wcount.wdata.ccount.child.cage
    -#> 1                      2016-06-15                              6
    -#> 2                      2014-08-25                             27
    -#> 3                                                             16
    -#> 4                      2013-12-24                             36
    -#> 5                                                             36
    -#> 6                                                             39
    -#> 7                      2013-04-14                             44
    -#> 8                                                             42
    -#> 9                      2015-12-24                             12
    -#> 10                     2013-10-24                             38
    -#> 11                     2014-10-09                             26
    -#> 12                                                            36
    -#> 13                     2013-08-20                             40
    -#> 14                     2016-06-24                              6
    -#> 15                     2014-12-24                             24
    -#> 16                     2015-05-18                             19
    -#> 17                     2016-09-24                              2
    -#> 18                     2013-07-06                             41
    -#> 19                     2015-03-19                             21
    -#> 20                     2015-10-08                             14
    -#> 21                                                            12
    -#> 22                     2013-12-24                             36
    -#> 23                     2014-02-25                             33
    -#> 24                     2013-06-20                             42
    -#> 25                     2014-09-24                             27
    -#> 26                     2014-09-19                             27
    -#> 27                     2015-11-24                             13
    -#> 28                     2014-11-15                             25
    -#> 29                     2012-01-09                             59
    -#> 30                                                             3
    -#> 31                                                            48
    -#> 32                     2013-07-21                             41
    -#> 33                     2014-07-24                             29
    -#> 34                     2014-05-19                             31
    -#> 35                     2016-08-28                              3
    -#> 36                     2014-07-07                             29
    -#> 37                     2016-03-15                              9
    -#> 38                     2013-12-24                             36
    -#> 39                     2013-12-17                             36
    -#> 40                     2015-10-20                             14
    -#> 41                     2013-12-24                             36
    -#> 42                     2016-10-24                              2
    -#> 43                     2013-12-24                             36
    -#> 44                     2016-02-29                              9
    -#> 45                     2016-01-01                             11
    -#> 46                     2016-03-28                              8
    -#> 47                                                            24
    -#> 48                                                            39
    -#> 49                     2014-01-05                             35
    -#> 50                     2014-05-05                             31
    -#>    wcount.wdata.ccount.illness.ill1 wcount.wdata.ccount.illness.ill2
    -#> 1                                 2                                2
    -#> 2                                 2                                2
    -#> 3                                 1                                1
    -#> 4                                 2                                2
    -#> 5                                 2                                2
    -#> 6                                 2                                2
    -#> 7                                 2                                2
    -#> 8                                 2                                2
    -#> 9                                 2                                2
    -#> 10                                2                                1
    -#> 11                                1                                1
    -#> 12                                2                                2
    -#> 13                                2                                2
    -#> 14                                2                                2
    -#> 15                                2                                2
    -#> 16                                2                                2
    -#> 17                                2                                2
    -#> 18                                1                                1
    -#> 19                                2                                2
    -#> 20                                2                                2
    -#> 21                                2                                1
    -#> 22                                2                                2
    -#> 23                                2                                2
    -#> 24                                2                                2
    -#> 25                                2                                1
    -#> 26                                2                                2
    -#> 27                                2                                2
    -#> 28                                2                                2
    -#> 29                                2                                2
    -#> 30                                2                                2
    -#> 31                                2                                2
    -#> 32                                2                                2
    -#> 33                                2                                2
    -#> 34                                1                                2
    -#> 35                                2                                2
    -#> 36                                2                                2
    -#> 37                                2                                2
    -#> 38                                2                                2
    -#> 39                                1                                1
    -#> 40                                1                                2
    -#> 41                                2                                1
    -#> 42                                2                                2
    -#> 43                                2                                2
    -#> 44                                1                                2
    -#> 45                                2                                2
    -#> 46                                2                                2
    -#> 47                                2                                2
    -#> 48                                2                                2
    -#> 49                                2                                2
    -#> 50                                2                                2
    -#>    wcount.wdata.ccount.illness.ill3 KEY PARENT_KEY
    -#> 1                                 2   1          1
    -#> 2                                 1   2          1
    -#> 3                                 2   3          4
    -#> 4                                 2   4          7
    -#> 5                                 2   5          9
    -#> 6                                 1   6         12
    -#> 7                                 2   7         13
    -#> 8                                 2   8         14
    -#> 9                                 2   9         20
    -#> 10                                2  10         20
    -#> 11                                1  11         21
    -#> 12                                2  12         23
    -#> 13                                2  13         24
    -#> 14                                2  14         25
    -#> 15                                2  15         25
    -#> 16                                2  16         26
    -#> 17                                2  17         31
    -#> 18                                2  18         32
    -#> 19                                1  19         33
    -#> 20                                1  20         34
    -#> 21                                2  21         37
    -#> 22                                2  22         38
    -#> 23                                2  23         39
    -#> 24                                2  24         42
    -#> 25                                2  25         43
    -#> 26                                1  26         46
    -#> 27                                2  27         48
    -#> 28                                2  28         49
    -#> 29                                2  29         49
    -#> 30                                2  30         51
    -#> 31                                2  31         51
    -#> 32                                2  32         52
    -#> 33                                2  33         52
    -#> 34                                1  34         53
    -#> 35                                1  35         53
    -#> 36                                1  36         54
    -#> 37                                1  37         54
    -#> 38                                2  38         55
    -#> 39                                2  39         56
    -#> 40                                2  40         56
    -#> 41                                2  41         57
    -#> 42                                2  42         57
    -#> 43                                2  43         59
    -#> 44                                1  44         60
    -#> 45                                1  45         62
    -#> 46                                2  46         64
    -#> 47                                1  47         65
    -#> 48                                2  48         65
    -#> 49                                1  49         67
    -#> 50                                2  50         67
    -
    -
    -
    -
    - -
    - - -
    - -
    -

    Site built with pkgdown 2.0.7.

    -
    - -
    - - - - - - - - diff --git a/docs/sitemap.xml b/docs/sitemap.xml deleted file mode 100644 index ab312dc..0000000 --- a/docs/sitemap.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - https://rapidsurveys.io/odkr/404.html - - - https://rapidsurveys.io/odkr/CODE_OF_CONDUCT.html - - - https://rapidsurveys.io/odkr/CONTRIBUTING.html - - - https://rapidsurveys.io/odkr/LICENSE-text.html - - - https://rapidsurveys.io/odkr/LICENSE.html - - - https://rapidsurveys.io/odkr/NEWS.html - - - https://rapidsurveys.io/odkr/README.html - - - https://rapidsurveys.io/odkr/authors.html - - - https://rapidsurveys.io/odkr/cran-comments.html - - - https://rapidsurveys.io/odkr/index.html - - - https://rapidsurveys.io/odkr/news/index.html - - - https://rapidsurveys.io/odkr/reference/create_sd.html - - - https://rapidsurveys.io/odkr/reference/expandMultChoice.html - - - https://rapidsurveys.io/odkr/reference/expandMultipleChoice.html - - - https://rapidsurveys.io/odkr/reference/expand_choice.html - - - https://rapidsurveys.io/odkr/reference/export_data.html - - - https://rapidsurveys.io/odkr/reference/get_briefcase.html - - - https://rapidsurveys.io/odkr/reference/get_data.html - - - https://rapidsurveys.io/odkr/reference/get_help.html - - - https://rapidsurveys.io/odkr/reference/index.html - - - https://rapidsurveys.io/odkr/reference/mergeNestedODK.html - - - https://rapidsurveys.io/odkr/reference/odkr.html - - - https://rapidsurveys.io/odkr/reference/pull_local.html - - - https://rapidsurveys.io/odkr/reference/pull_remote.html - - - https://rapidsurveys.io/odkr/reference/push_data.html - - - https://rapidsurveys.io/odkr/reference/renameODK.html - - - https://rapidsurveys.io/odkr/reference/sampleData1.html - - - https://rapidsurveys.io/odkr/reference/sampleData2.html - - - https://rapidsurveys.io/odkr/reference/sampleData3.html - - diff --git a/inst/WORDLIST b/inst/WORDLIST index 4f3d277..4233007 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -1,6 +1,7 @@ -AppVeyor +CMD Charater CodeFactor +Codecov DD Kassala Lifecycle @@ -13,7 +14,6 @@ PEM Rbuildignore YYYY ac -codecov devtools ef eg diff --git a/man/odkr.Rd b/man/odkr.Rd index 78a3569..6719592 100644 --- a/man/odkr.Rd +++ b/man/odkr.Rd @@ -2,8 +2,8 @@ % Please edit documentation in R/odkr.R \docType{package} \name{odkr} -\alias{odkr} \alias{odkr-package} +\alias{odkr} \title{ODK Briefcase R API} \description{ ODK Briefcase is a Java application for fetching and pushing OpenDataKit @@ -11,15 +11,16 @@ ODK Briefcase is a Java application for fetching and pushing OpenDataKit from the mobile client ODK Collect when there is no internet connectivity, when there is no ODK Aggregate Server set-up or when an ODK Aggregate Server is not preferred. ODK Briefcase executable \code{.jar} file can be -downloaded from the OpenDataKit GitHub \href{https://github.com/getodk/briefcase/releases}{repo}. +downloaded from the OpenDataKit GitHub +\href{https://github.com/getodk/briefcase/releases}{repo}. } \details{ As of ODK Briefcase version 1.4.4, a scriptable command line interface (CLI) to the Java application has been available. This package provides an R interface to ODK Briefcase via the available CLI to pull forms from a remote ODK Aggregate Server or from a local ODK folder \code{/odk} collected from -mobile clients. This package requires Java 8 installed. Java 8 can be downloaded -\href{https://java.com/en/download/}{here}. +mobile clients. This package requires Java 8 installed. Java 8 can be +downloaded \href{https://java.com/en/download/}{here}. } \seealso{ Useful links: diff --git a/tests/testthat.R b/tests/testthat.R index 0ddf4d3..b0786ca 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -1,7 +1,12 @@ +# This file is part of the standard setup for testthat. +# It is recommended that you do not modify it. +# +# Where should you do additional test configuration? +# Learn more about the roles of various files in: +# * https://r-pkgs.org/testing-design.html#sec-tests-files-overview +# * https://testthat.r-lib.org/articles/special-files.html + library(testthat) library(odkr) -dirPath <- tempdir() -get_briefcase(destination = dirPath) - test_check("odkr")
    -
    - - - -
    -
    - - -
    -

    Updates pre-installed ODK Briefcase jar file to the latest version -downloaded from https://opendatakit.org.

    -
    - -
    -
    get_briefcase(destination = "", briefcase = "odkBriefcase_latest")
    -
    - -
    -

    Arguments

    -
    destination
    -

    Path to directory where ODK Briefcase .jar file -will be downloaded into

    - - -
    briefcase
    -

    Filename of the downloaded ODK Briefcase .jar file. -Default is "odkBriefcase_latest"

    - -
    - -
    -

    Examples

    -
      # Get latest version of ODK Briefcase and save in a temporary directory
    -    if (FALSE) {
    -      dirPath <- tempdir()
    -      get_briefcase(destination = dirPath)
    -    }
    -
    -
    -
    - -
    - - -