{"id":950,"name":"qualR","description":"Download of air pollutants and meteorological information from CETESB QUALAR System for São Paulo, and MonitorAr Program, for Rio de Janeiro.","url":"https://github.com/ropensci/qualR","last_synced_at":"2026-04-08T14:01:37.895Z","repository":{"id":112486143,"uuid":"267442363","full_name":"ropensci/qualR","owner":"ropensci","description":"This is the qualR package, it will help you bring São Paulo and Rio de Janeiro air quality data to your R session :brazil:.","archived":false,"fork":false,"pushed_at":"2025-06-03T01:40:17.000Z","size":1732,"stargazers_count":27,"open_issues_count":7,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-02T15:18:09.559Z","etag":null,"topics":["air-pollutants","air-quality-data","air-quality-measurements","brazil","cetesb","r","r-package","rio-de-janeiro","rstats","sao-paulo","weather-data"],"latest_commit_sha":null,"homepage":"https://docs.ropensci.org/qualR/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ropensci.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json","zenodo":null}},"created_at":"2020-05-27T22:52:22.000Z","updated_at":"2025-06-11T22:58:50.000Z","dependencies_parsed_at":"2024-05-02T01:51:13.092Z","dependency_job_id":"2143efdc-9ec1-4b59-8c95-b11e18a5b31f","html_url":"https://github.com/ropensci/qualR","commit_stats":{"total_commits":213,"total_committers":3,"mean_commits":71.0,"dds":0.107981220657277,"last_synced_commit":"01748cdada5a0293b2dbf394551f6411001065bb"},"previous_names":["quishqa/qualr"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/ropensci/qualR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29443468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T10:51:12.367Z","status":"ssl_error","status_checked_at":"2026-02-14T10:50:52.088Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"ropensci","name":"rOpenSci","uuid":"1200269","kind":"organization","description":"","email":"info@ropensci.org","website":"https://ropensci.org/","location":"Berkeley, CA","twitter":"rOpenSci","company":null,"icon_url":"https://avatars.githubusercontent.com/u/1200269?v=4","repositories_count":307,"last_synced_at":"2023-03-10T20:30:59.242Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ropensci","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T19:23:08.224Z","updated_at":"2023-03-10T20:30:59.305Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci/repositories"},"packages":[{"id":11733592,"name":"github.com/ropensci/qualr","ecosystem":"go","description":null,"homepage":null,"licenses":"other","normalized_licenses":["Other"],"repository_url":"https://github.com/ropensci/qualr","keywords_array":[],"namespace":null,"versions_count":4,"first_release_published_at":"2020-07-25T21:06:37.000Z","latest_release_published_at":"2023-03-07T00:45:17.000Z","latest_release_number":"v0.9.7","last_synced_at":"2026-04-06T13:00:41.778Z","created_at":"2025-06-05T11:17:24.482Z","updated_at":"2026-04-06T13:00:41.779Z","registry_url":"https://pkg.go.dev/github.com/ropensci/qualr","install_command":"go get github.com/ropensci/qualr","documentation_url":"https://pkg.go.dev/github.com/ropensci/qualr#section-documentation","metadata":{},"repo_metadata":{"id":112486143,"uuid":"267442363","full_name":"ropensci/qualR","owner":"ropensci","description":"This is the qualR package, it will help you bring São Paulo and Rio de Janeiro air quality data to your R session :brazil:.","archived":false,"fork":false,"pushed_at":"2025-06-03T01:40:17.000Z","size":1732,"stargazers_count":27,"open_issues_count":7,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-09T10:56:24.389Z","etag":null,"topics":["air-pollutants","air-quality-data","air-quality-measurements","brazil","cetesb","r","r-package","rio-de-janeiro","rstats","sao-paulo","weather-data"],"latest_commit_sha":null,"homepage":"https://docs.ropensci.org/qualR/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ropensci.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json","zenodo":null}},"created_at":"2020-05-27T22:52:22.000Z","updated_at":"2025-06-11T22:58:50.000Z","dependencies_parsed_at":"2024-05-02T01:51:13.092Z","dependency_job_id":"2143efdc-9ec1-4b59-8c95-b11e18a5b31f","html_url":"https://github.com/ropensci/qualR","commit_stats":{"total_commits":213,"total_committers":3,"mean_commits":71.0,"dds":0.107981220657277,"last_synced_commit":"01748cdada5a0293b2dbf394551f6411001065bb"},"previous_names":["quishqa/qualr"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/ropensci/qualR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006111,"owners_count":26084027,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"ropensci","name":"rOpenSci","uuid":"1200269","kind":"organization","description":"","email":"info@ropensci.org","website":"https://ropensci.org/","location":"Berkeley, CA","twitter":"rOpenSci","company":null,"icon_url":"https://avatars.githubusercontent.com/u/1200269?v=4","repositories_count":307,"last_synced_at":"2023-03-10T20:30:59.242Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ropensci","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T19:23:08.224Z","updated_at":"2023-03-10T20:30:59.305Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci/repositories"},"tags":[{"name":"v0.9.7","sha":"c0e278282e02ed2b77c5c5b6a71f0970896f9291","kind":"commit","published_at":"2023-03-07T00:45:17.000Z","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/v0.9.7","html_url":"https://github.com/ropensci/qualR/releases/tag/v0.9.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ropensci/qualR@v0.9.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.7/manifests"},{"name":"v0.9.6","sha":"dc15bd0d95366fad17258749890a0840b996b38b","kind":"commit","published_at":"2021-11-15T22:46:54.000Z","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/v0.9.6","html_url":"https://github.com/ropensci/qualR/releases/tag/v0.9.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ropensci/qualR@v0.9.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.6/manifests"},{"name":"v0.9.5","sha":"560e2506231898cae56094a933641146409bcb26","kind":"commit","published_at":"2021-09-20T21:52:40.000Z","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/v0.9.5","html_url":"https://github.com/ropensci/qualR/releases/tag/v0.9.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ropensci/qualR@v0.9.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.5/manifests"},{"name":"v0.9.0","sha":"bb3bfa01c2388dc8fca2a415b5b78ee0bf81acd2","kind":"commit","published_at":"2020-07-25T21:06:37.000Z","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/v0.9.0","html_url":"https://github.com/ropensci/qualR/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ropensci/qualR@v0.9.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.0/manifests"}]},"repo_metadata_updated_at":"2025-10-11T03:40:21.864Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.757538697138725,"dependent_packages_count":5.395053785167736,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.57629624115323},"purl":"pkg:golang/github.com/ropensci/qualr","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/ropensci/qualr","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/ropensci/qualr","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/ropensci/qualr/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-08T07:41:40.164Z","issues_count":10,"pull_requests_count":7,"avg_time_to_close_issue":880551.6666666666,"avg_time_to_close_pull_request":195452.0,"issues_closed_count":3,"pull_requests_closed_count":5,"pull_request_authors_count":3,"issue_authors_count":3,"avg_comments_per_issue":0.7,"avg_comments_per_pull_request":1.2857142857142858,"merged_pull_requests_count":5,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1748.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/issues","maintainers":[{"login":"maelle","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/maelle"},{"login":"quishqa","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/quishqa"},{"login":"Schuch666","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Schuch666"}],"active_maintainers":[{"login":"Schuch666","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Schuch666"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2Fqualr/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2Fqualr/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2Fqualr/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2Fqualr/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2Fqualr/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2090649,"maintainers_count":0,"namespaces_count":779664,"keywords_count":112728,"github":"golang","metadata":{"funded_packages_count":53440},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-05T05:09:06.732Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":11733587,"name":"github.com/ropensci/qualR","ecosystem":"go","description":null,"homepage":null,"licenses":"other","normalized_licenses":["Other"],"repository_url":"https://github.com/ropensci/qualR","keywords_array":[],"namespace":null,"versions_count":4,"first_release_published_at":"2020-07-25T21:06:37.000Z","latest_release_published_at":"2023-03-07T00:45:17.000Z","latest_release_number":"v0.9.7","last_synced_at":"2026-04-06T13:00:42.067Z","created_at":"2025-06-05T11:17:22.317Z","updated_at":"2026-04-06T13:00:42.067Z","registry_url":"https://pkg.go.dev/github.com/ropensci/qualR","install_command":"go get github.com/ropensci/qualR","documentation_url":"https://pkg.go.dev/github.com/ropensci/qualR#section-documentation","metadata":{},"repo_metadata":{"id":112486143,"uuid":"267442363","full_name":"ropensci/qualR","owner":"ropensci","description":"This is the qualR package, it will help you bring São Paulo and Rio de Janeiro air quality data to your R session :brazil:.","archived":false,"fork":false,"pushed_at":"2025-06-03T01:40:17.000Z","size":1732,"stargazers_count":27,"open_issues_count":7,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-09T10:56:24.389Z","etag":null,"topics":["air-pollutants","air-quality-data","air-quality-measurements","brazil","cetesb","r","r-package","rio-de-janeiro","rstats","sao-paulo","weather-data"],"latest_commit_sha":null,"homepage":"https://docs.ropensci.org/qualR/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ropensci.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json","zenodo":null}},"created_at":"2020-05-27T22:52:22.000Z","updated_at":"2025-06-11T22:58:50.000Z","dependencies_parsed_at":"2024-05-02T01:51:13.092Z","dependency_job_id":"2143efdc-9ec1-4b59-8c95-b11e18a5b31f","html_url":"https://github.com/ropensci/qualR","commit_stats":{"total_commits":213,"total_committers":3,"mean_commits":71.0,"dds":0.107981220657277,"last_synced_commit":"01748cdada5a0293b2dbf394551f6411001065bb"},"previous_names":["quishqa/qualr"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/ropensci/qualR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005401,"owners_count":26083884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"ropensci","name":"rOpenSci","uuid":"1200269","kind":"organization","description":"","email":"info@ropensci.org","website":"https://ropensci.org/","location":"Berkeley, CA","twitter":"rOpenSci","company":null,"icon_url":"https://avatars.githubusercontent.com/u/1200269?v=4","repositories_count":307,"last_synced_at":"2023-03-10T20:30:59.242Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ropensci","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T19:23:08.224Z","updated_at":"2023-03-10T20:30:59.305Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci/repositories"},"tags":[{"name":"v0.9.7","sha":"c0e278282e02ed2b77c5c5b6a71f0970896f9291","kind":"commit","published_at":"2023-03-07T00:45:17.000Z","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/v0.9.7","html_url":"https://github.com/ropensci/qualR/releases/tag/v0.9.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ropensci/qualR@v0.9.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.7/manifests"},{"name":"v0.9.6","sha":"dc15bd0d95366fad17258749890a0840b996b38b","kind":"commit","published_at":"2021-11-15T22:46:54.000Z","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/v0.9.6","html_url":"https://github.com/ropensci/qualR/releases/tag/v0.9.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ropensci/qualR@v0.9.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.6/manifests"},{"name":"v0.9.5","sha":"560e2506231898cae56094a933641146409bcb26","kind":"commit","published_at":"2021-09-20T21:52:40.000Z","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/v0.9.5","html_url":"https://github.com/ropensci/qualR/releases/tag/v0.9.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ropensci/qualR@v0.9.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.5/manifests"},{"name":"v0.9.0","sha":"bb3bfa01c2388dc8fca2a415b5b78ee0bf81acd2","kind":"commit","published_at":"2020-07-25T21:06:37.000Z","download_url":"https://codeload.github.com/ropensci/qualR/tar.gz/v0.9.0","html_url":"https://github.com/ropensci/qualR/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ropensci/qualR@v0.9.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/tags/v0.9.0/manifests"}]},"repo_metadata_updated_at":"2025-10-11T03:40:21.860Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.757538697138725,"dependent_packages_count":5.395053785167736,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.57629624115323},"purl":"pkg:golang/github.com/ropensci/qual%21r","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/ropensci/qualR","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/ropensci/qualR","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/ropensci/qualR/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-08T07:41:40.164Z","issues_count":10,"pull_requests_count":7,"avg_time_to_close_issue":880551.6666666666,"avg_time_to_close_pull_request":195452.0,"issues_closed_count":3,"pull_requests_closed_count":5,"pull_request_authors_count":3,"issue_authors_count":3,"avg_comments_per_issue":0.7,"avg_comments_per_pull_request":1.2857142857142858,"merged_pull_requests_count":5,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1748.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/issues","maintainers":[{"login":"maelle","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/maelle"},{"login":"quishqa","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/quishqa"},{"login":"Schuch666","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Schuch666"}],"active_maintainers":[{"login":"Schuch666","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Schuch666"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2FqualR/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2FqualR/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2FqualR/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2FqualR/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fropensci%2FqualR/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2090649,"maintainers_count":0,"namespaces_count":779664,"keywords_count":112728,"github":"golang","metadata":{"funded_packages_count":53440},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-05T05:09:06.732Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":1254502,"full_name":"ropensci/qualR","default_branch":"master","total_commits":217,"total_committers":3,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":72.33333333333333,"dds":0.11520737327188935,"past_year_total_commits":2,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":2.0,"past_year_dds":0.0,"last_synced_at":"2026-04-06T13:01:07.764Z","last_synced_commit":"035ac0d3ab2c04d5e312bda7727424487b810031","created_at":"2023-03-27T11:48:17.894Z","updated_at":"2026-04-06T13:01:07.743Z","committers":[{"name":"Mario Gavidia-Calderón","email":"mgavidiac@gmail.com","login":"quishqa","count":192},{"name":"Schuch666","email":"underschuch@gmail.com","login":"Schuch666","count":24},{"name":"Maëlle Salmon","email":"maelle.salmon@yahoo.se","login":"maelle","count":1}],"past_year_committers":[{"name":"Daniel Schuch","email":"32721340+Schuch666","login":"Schuch666","count":2}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-08T00:00:24.542Z","repositories_count":6212136,"commits_count":915261378,"contributors_count":35359558,"owners_count":1143087,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"ropensci/qualR","html_url":"https://github.com/ropensci/qualR","last_synced_at":"2026-04-04T12:03:23.193Z","status":"error","issues_count":10,"pull_requests_count":9,"avg_time_to_close_issue":880551.6666666666,"avg_time_to_close_pull_request":195452.0,"issues_closed_count":3,"pull_requests_closed_count":5,"pull_request_authors_count":3,"issue_authors_count":3,"avg_comments_per_issue":0.7,"avg_comments_per_pull_request":1.777777777777778,"merged_pull_requests_count":5,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":4,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1748.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2023-05-09T10:36:52.269Z","updated_at":"2026-04-04T12:03:23.193Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2FqualR/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"MEMBER":6,"CONTRIBUTOR":3,"NONE":1},"pull_request_author_associations_count":{"COLLABORATOR":5,"MEMBER":4},"issue_authors":{"maelle":6,"Schuch666":3,"ibarraespinosa":1},"pull_request_authors":{"maelle":4,"quishqa":3,"Schuch666":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:09.270Z","repositories_count":14105280,"issues_count":34446529,"pull_requests_count":112449607,"authors_count":11227529,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"COLLABORATOR":3,"MEMBER":1},"past_year_issue_authors":{},"past_year_pull_request_authors":{"Schuch666":2,"maelle":1,"quishqa":1},"maintainers":[{"login":"maelle","count":10,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/maelle"},{"login":"quishqa","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/quishqa"},{"login":"Schuch666","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Schuch666"}],"active_maintainers":[{"login":"Schuch666","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Schuch666"},{"login":"maelle","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/maelle"},{"login":"quishqa","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/quishqa"}]},"events":{"total":{"PullRequestEvent":2,"IssuesEvent":1,"WatchEvent":3,"IssueCommentEvent":9,"PushEvent":4},"last_year":{"PullRequestEvent":2,"WatchEvent":1,"IssueCommentEvent":5,"PushEvent":1}},"keywords":["air-pollutants","air-quality-data","air-quality-measurements","brazil","cetesb","r","r-package","rio-de-janeiro","rstats","sao-paulo","weather-data"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/R-CMD-check.yaml","sha":null,"kind":"manifest","created_at":"2023-04-29T21:47:30.083Z","updated_at":"2023-04-29T21:47:30.083Z","repository_link":"https://github.com/ropensci/qualR/blob/master/.github/workflows/R-CMD-check.yaml","dependencies":[{"id":9306817360,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":9306817361,"package_name":"r-lib/actions/setup-pandoc","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":9306817362,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":9306817374,"package_name":"r-lib/actions/setup-r-dependencies","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":9306817376,"package_name":"r-lib/actions/check-r-package","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test-coverage.yaml","sha":null,"kind":"manifest","created_at":"2023-04-29T21:47:30.152Z","updated_at":"2023-04-29T21:47:30.152Z","repository_link":"https://github.com/ropensci/qualR/blob/master/.github/workflows/test-coverage.yaml","dependencies":[{"id":9306817394,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":9306817395,"package_name":"r-lib/actions/setup-r","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":9306817396,"package_name":"r-lib/actions/setup-r-dependencies","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":9306817397,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"cran","filepath":"DESCRIPTION","sha":null,"kind":"manifest","created_at":"2023-04-29T21:47:30.180Z","updated_at":"2023-04-29T21:47:30.180Z","repository_link":"https://github.com/ropensci/qualR/blob/master/DESCRIPTION","dependencies":[{"id":9306817413,"package_name":"R","ecosystem":"cran","requirements":"\u003e= 3.5.0","direct":true,"kind":"depends","optional":false},{"id":9306817414,"package_name":"XML","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":9306817415,"package_name":"httr","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":9306817416,"package_name":"jsonlite","ecosystem":"cran","requirements":"*","direct":true,"kind":"imports","optional":false},{"id":9306817417,"package_name":"knitr","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":9306817418,"package_name":"covr","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":9306817419,"package_name":"testthat","ecosystem":"cran","requirements":"\u003e= 3.0.0","direct":true,"kind":"suggests","optional":false},{"id":9306817420,"package_name":"rmarkdown","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":9306817421,"package_name":"openair","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":9306817422,"package_name":"ggplot2","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":9306817423,"package_name":"purrr","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false},{"id":9306817424,"package_name":"magrittr","ecosystem":"cran","requirements":"*","direct":true,"kind":"suggests","optional":false}]}],"score":null,"created_at":"2023-09-11T11:54:36.439Z","updated_at":"2026-04-08T14:01:37.897Z","avatar_url":"https://github.com/ropensci.png","language":"R","category":"Natural Resources","sub_category":"Air Quality","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# qualR: An R package to download São Paulo and Rio de Janeiro air pollution data\n [![R-CMD-check](https://github.com/ropensci/qualR/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/ropensci/qualR/actions/workflows/R-CMD-check.yaml) [![Coverage Status](https://img.shields.io/codecov/c/github/quishqa/qualR/master.svg)](https://codecov.io/github/quishqa/qualR?branch=master)  [![](https://badges.ropensci.org/474_status.svg)](https://github.com/ropensci/software-review/issues/474) [![DOI](https://zenodo.org/badge/267442363.svg)](https://zenodo.org/badge/latestdoi/267442363) [![CodeFactor](https://www.codefactor.io/repository/github/ropensci/qualr/badge)](https://www.codefactor.io/repository/github/ropensci/qualr)\n\n\n\nThe goal of `qualR` is to facilitate the download of air pollutants and meteorological\ninformation from [CETESB QUALAR System](https://qualar.cetesb.sp.gov.br/qualar/home.do) for São Paulo, and [MonitorAr Program](https://www.data.rio/datasets/dados-hor%C3%A1rios-do-monitoramento-da-qualidade-do-ar-monitorar), for Rio de Janeiro.\nThis information is often used for air pollution data analysis and for air quality model evaluation.\n\n`qualR` functions return completed data frames (missing hours padded out with `NA`),\n with a `date` column in `POSIXct` for temporal aggregation and for compatibility with [`openair` package ](https://github.com/davidcarslaw/openair).\n `qualR` improves air pollution research by easily producing ready-to-use datasets, by facilitating exploratory data analysis, and by fostering reproducibility.\n\n## Installation\n\nYou can install it directly using:\n\n```R\ninstall.packages('qualR', repos = c('https://ropensci.r-universe.dev', 'https://cloud.r-project.org'))\n```\n## How to use\n\n\n`qualR` have the following functions:\n\n * `cetesb_retrieve_param`: Download a list of different parameter from one air quality station (AQS) from CETESB QUALAR System.\n * `cetesb_retrieve_pol`: Download criteria pollutants from one AQS from CETESB QUALAR System.\n * `cetesb_retrieve_met`: Download meteorological parameters from one AQS from CETESB QUALAR System.\n * `cetesb_retrieve_met_pol`: Download meteorological parameters and criteria pollutants from one AQS from CETESB QUALAR System.\n * `monitor_ar_retrieve_param`: Download a list of different parameters from MonitorAr - Rio program.\n * `monitor_ar_retrieve_pol`: Download criteria pollutants from one AQS from MonitorAr - Rio program.\n * `monitor_ar_retrieve_met`: Download meteorological parameters from one AQS from MonitorAr - Rio program.\n * `monitor_ar_retrieve_met_pol`: Download meteorological parameters and criteria pollutants from one AQS from MonitorAr - Rio Program.\n\n\nThese functions return a data frame, with a `date` column in POSIXct, which allows you\nto use other packages for data analysis, such as [openair](https://davidcarslaw.github.io/openair/).\n\n\nTo download the information for São Paulo, you first need to have an account in [CETESB QUALAR system](https://qualar.cetesb.sp.gov.br/qualar/home.do).\n[Here](https://seguranca.cetesb.sp.gov.br/Home/CadastrarUsuario), you can sign up to CETESB QUALAR system.\nMonitorAr doesn't require an account.\n\nThen you have to know the AQS and parameter codes (i.e. pollutant or meteorological data) to use these functions.\nCurrently, `cetesb_retrieve` family functions also accept the parameter abbreviation (i.e \"O3\" instead of 63), and the complete name of the AQS (i.e \"Pinheiros\" instead of 99) as inputs.\nTo check those parameters you can check the following datasets:\n\n```R\nlibrary(qualR)\n\n# To see all CETESB AQS names with their codes and lat lon\ncetesb_aqs\n\n# To see all CETESB AQS parameters with their codes and abbreviation\ncetesb_param\n\n# To see all MonitorAr-Rio AQS names with their codes and lat and lon\nmonitor_ar_aqs\n\n# To see all MonitorAr-Rio parameters with their codes\nmonitor_ar_param\n\n```\n\n## Using `qualR` to download CETESB data\n\n#### Downloading multiple parameter from one AQS\n\nIf you want to download Ozone information from Pinheiros AQS, from January first to January 7th, you can do:\n\n```R\nlibrary(qualR)\n\ncetesb_aqs # To check Pinheiros aqs_code\ncetesb_param # To check Ozone pol_code\n\nmy_user_name \u003c- \"john.doe@mymail.com\"\nmy_password \u003c- \"drowssap\"\npin_code \u003c- 99\nstart_date \u003c- \"01/01/2020\"\nend_date \u003c- \"07/01/2020\"\n\npin_o3 \u003c- cetesb_retrieve_param(my_user_name,\n                              my_password,\n                              \"O3\",\n                              pin_code, # It could also be \"Pinheiros\"\n                              start_date,\n                              end_date)\n\n```\n(Note: Previous `cetesb_retrieve` function now is depreciated use `cetesb_retrieve_param` instead)\n\nMaybe you just need a couple of parameters.\nFor example, if you want to download ozone and wind speed and direction from Pinheiros AQS,\nyou can do the following:\n\n```R\nlibrary(qualR)\n\ncetesb_aqs # To check Pinheiros aqs_code\n\nmy_user_name \u003c- \"john.doe@mymail.com\"\nmy_password \u003c- \"drowssap\"\nstart_date \u003c- \"01/01/2020\"\nend_date \u003c- \"07/01/2020\"\n\ncetesb_param # To check ozone, wind speed and wind direction abbreviations\n\npin_o3_ws_wd \u003c- cetesb_retrieve_param(my_user_name,\n                                    my_password,\n                                    c(\"O3\", \"VV\", \"VD\"),\n                                    \"Pinheiros\",\n                                    start_date = \"01/01/2020\",\n                                    end_date = \"07/01/2020\")\n\n```\n\n#### Downloading criteria pollutants from one AQS\n\nWe use `cetesb_retrieve_pol`. This function already have the parameter codes for O\u003csub\u003e3\u003c/sub\u003e, NO, NO\u003csub\u003e2\u003c/sub\u003e,  NO\u003csub\u003eX\u003c/sub\u003e, CO, PM\u003csub\u003e10\u003c/sub\u003e and PM\u003csub\u003e2.5\u003c/sub\u003e. So, it doesn't require `pol_code`, only `aqs_code`. CO is in ppm and  NO\u003csub\u003eX\u003c/sub\u003e is in ppb, the other pollutants are in \u0026mu;g/m\u003csup\u003e3\u003c/sup\u003e.\nIn this example, we download all these pollutants from Pinheiros AQS.\n\n```R\nlibrary(qualR)\n\ncetesb_aqs # To check Pinheiros aqs_code\n\nmy_user_name \u003c- \"john.doe@mymail.com\"\nmy_password \u003c- \"drowssap\"\npin_code \u003c- 99\nstart_date \u003c- \"01/01/2020\"\nend_date \u003c- \"07/01/2020\"\n\npin_pol \u003c- cetesb_retrieve_pol(my_user_name,\n                             my_password,\n                             pin_code, # It could also be \"Pinheiros\"\n                             start_date,\n                             end_date)\n\n```\n\n#### Downloading meteorological parameters from one AQS\n\nWe use `cetesb_retrieve_met`. This function already has the parameter codes for Temperature (\u0026deg;C), Relative Humidity (%), Wind Speed (m/s) and wind Direction (\u0026deg;), and Pressure (hPa). So, it doesn't require `pol_code`, only `aqs_code`.\nIn this example, we download all these parameters from Pinheiros AQS. Remember that CETESB uses 777 and 888 values in wind direction to indicate calm wind and no data, these values appear in the final data frame.\n\n```R\nlibrary(qualR)\n\ncetesb_aqs # To check Pinheiros aqs_code\n\nmy_user_name \u003c- \"john.doe@mymail.com\"\nmy_password \u003c- \"drowssap\"\npin_code \u003c- 99\nstart_date \u003c- \"01/01/2020\"\nend_date \u003c- \"07/01/2020\"\n\npin_met \u003c- cetesb_retrieve_met(my_user_name,\n                             my_password,\n                             pin_code, # It could also be Pinheiros\n                             start_date,\n                             end_date)\n\n```\n#### Downloading meteorological and criteria pollutant from one AQS\n\nThis is the equivalent to run `cetesb_retrieve_met` and `cetesb_retrieve_pol` at the same time, and\nIt will return all the data in one data frame.\n\n```R\nlibrary(qualR)\n\ncetesb_aqs # To check Pinheiros aqs_code\n\nmy_user_name \u003c- \"john.doe@mymail.com\"\nmy_password \u003c- \"drowssap\"\npin_code \u003c- 99\nstart_date \u003c- \"01/01/2020\"\nend_date \u003c- \"07/01/2020\"\n\npin_all \u003c- cetesb_retrieve_met_pol(my_user_name,\n                                my_password,\n                                pin_code,\n                                start_date,\n                                end_date)\n```\n#### Some other examples\n\n##### To `.csv`\n\nNow, We want to download all the information from Ibirapuera AQS, and then export\nthis data in `.csv` to be read by other software.\n`qualR` functions have the argument `to_csv`, which by default has a `FALSE` value.\nSo, if you want to export the data to `csv`, you just need to change it to `TRUE`.\n\nThe csv file have the following file name: `{aqs_name}_{pol}_{start_date}_{end_date}.csv`.\nFor the functions that retrieve more than one parameter the file name is:\n`{aqs_name}_{TYPE}_{start_date}_{end_date}.csv`, where `TYPE` is \"POL\", \"MET\", or \"MET_POL\".\n\n```R\nlibrary(qualR)\n\ncetesb_aqs # To check Ibirapuera aqs_code\n\nmy_user_name \u003c- \"john.doe@mymail.com\"\nmy_password \u003c- \"drowssap\"\nibi_code \u003c- 83\nstart_date \u003c- \"01/01/2020\"\nend_date \u003c- \"07/01/2020\"\n\nibi_all \u003c- cetesb_retrieve_met_pol(my_user_name,\n                                my_password,\n                                ibi_code,\n                                start_date,\n                                end_date,\n                                to_csv = TRUE)\n\n```\n\nIn this case, we will get the file `Ibirapuera_MET_POL_01-01-2020_07-01-2020.csv`.\n\n##### A variable from all CETESB AQS\n\nSometimes, to check the spatial distribution of air pollutants, you need to download a pollutant from all the AQS.\nIn this example, we download a year of Ozone from all CETESB AQS.\n\n```R\nlibrary(qualR)\n\nmy_user_name \u003c- \"john.doe@mymail.com\"\nmy_password \u003c- \"drowssap\"\no3_code \u003c- 63\nstart_date \u003c- \"01/01/2019\"\nend_date \u003c- \"31/12/2019\"\n\n# All_o3 is a list with a data frame per AQS\nall_o3 \u003c- lapply(cetesb_aqs$code, cetesb_retrieve_param,\n                 username = my_user_name,\n                 password = my_password,\n                 parameters = \"O3\",\n                 start_date = start_date,\n                 end_date = end_date)\n\n# If you want  to export all in csv\nall_o3_csv \u003c- do.call(rbind, all_o3)\nwrite.table(all_o3_csv, \"all_o3_csv.csv\", sep = \",\", row.names = F)\n\n```\n\n##### AQS latitudes and longitudes\n\nMaybe you need to make a map of the AQS you used in your study.\nNow, we added latitude and longitude in degrees in the `cetesb_aqs` dataset:\n\n```R\nlibrary(qualR)\n\n# To see all the AQS latitude and longitude\ncetesb_aqs\n```\n\nHere are some examples to make some plots:\n* [A  pollutant concentration point map.](https://randroll.wordpress.com/2020/06/18/a-point-concentration-map-with-r/)\n* [An AQS location map.](https://randroll.wordpress.com/2019/10/28/heatmaps-in-r-an-example-using-ozone-concentrations/)\n* [An AQS location map using shapefiles.](https://randroll.wordpress.com/2018/04/18/making-a-simple-map-with-r/)\n\n##### A better way to save your credentials\n\n###### Using `usethis` and `edit_r_environ`\n\nIt is not so safe to write your user and password when you are coding,\nit is even more dangerous when we have to share our scripts.\nFor this reason, it is a better practice (and safer) to save your credentials (i.e. user and password) in your **global environment**.\n\nAn easier way to do it is by using `usethis` package.\nSo, first install it by:\n\n```R\ninstall.packages(\"usethis\")\n```\n\nThen use the function `edit_r_environ()`.\nIt will show a new file called `.Renviron`, where you'll define your user and password.\n\n```R\nlibrary(usethis)\n\nedit_r_environ()\n```\n\nIt will open `.Renviron` file, there you define your credentials:\n```R\nQUALAR_USER=\"john.doe@mymail.com\"\nQUALAR_PASS=\"drowssap\"\n```\nSave it, and the changes will work after restart R.\nTo call them, you use `Sys.getenv()`.\n\nSo now, if we replicate the previous example *Downloading multiple parameter from one AQS*, it will be something like this:\n\n```R\nlibrary(qualR)\n\ncetesb_aqs # To check Pinheiros aqs_code\ncetesb_param # To check Ozone pol_code\n\no3_code \u003c- 63\npin_code \u003c- 99\nstart_date \u003c- \"01/01/2020\"\nend_date \u003c- \"07/01/2020\"\n\npin_o3 \u003c- cetesb_retrieve_param(Sys.getenv(\"QUALAR_USER\"), # calling your user\n                                Sys.getenv(\"QUALAR_PASS\"),  # calling your passord  \n                                o3_code,\n                                pin_code,\n                                start_date,\n                                end_date)\n```\n\nThis idea came from this [awesome post](https://towardsdatascience.com/ten-time-saving-r-hacks-b411add26b96).\n\n###### Using `keyring`\n\nAnother way to save your credentials is to use [`keyring`](https://blog.r-hub.io/2024/02/28/key-advantages-of-using-keyring/).\nFirst, you need to install the package:\n\n```R\n# install.packages(\"pak\")\npak::pak(\"keyring\")\n```\n\nThen, you can write your credential using `key_set()` function. \nA window will pop up to enter the credential. It also have the advantage that it does not requiere to restart R.\n\n```R\nlibrary(keyring)\nkey_set(QUALAR_USER) # Then you add your user\nkey_set(QUALAR_PASS) # Then you add your password\n```\nFinally, the previous example using `keyring` will be:\n\n```R\npin_o3 \u003c- cetesb_retrieve_param(key_get(\"QUALAR_USER\"), # calling your user\n                                key_get(\"QUALAR_PASS\"),  # calling your passord  \n                                o3_code,\n                                pin_code,\n                                start_date,\n                                end_date)\n\n```\n\n## Using `qualR` to download MonitorAr - Rio data\n\n#### Downloading one parameter from one AQS\n\nHere we will download Ozone information from Iraja AQS for all February 2019 by using `monitor_ar_retrieve_param` function.\n\n```R\nlibrary(qualR)\nmonitor_ar_aqs # To check Iraja AQS code\nmonitor_ar_param # To check Ozone code\n\nstart_date \u003c- \"01/02/2019\"\nend_date \u003c- \"01/03/2019\"\naqs_code \u003c- \"IR\"\nparam \u003c- \"O3\"\n\nir_o3 \u003c- monitor_ar_retrieve_param(date_start, date_end, aqs_code, param)\n\n```\n\n#### Downloading multiple parameters from one AQS\n\n`monitor_ar_retrieve_param` is similar to `cetesb_retrieve_param`, so it allows us to download multiple parameters.\nHere, we will download Ozone, Nitric oxide, Nitrogen dioxide, wind speed and direction.\n\n```R\nlibrary(qualR)\nmonitor_ar_aqs # To check Iraja AQS code\nmonitor_ar_param # To check parameter codes\n\ndate_start \u003c- \"01/02/2019\"\ndate_end \u003c- \"01/03/2019\"\naqs_code \u003c- \"IR\"\nparams \u003c- c(\"O3\", \"NO\", \"NO2\", \"Dir_Vento\", \"Vel_Vento\")\n\n\nir_data \u003c- monitor_ar_retrieve_param(date_start, date_end, aqs_code, params)\n```\n\n\n## Caveat emptor\n\n* CETESB QUALAR system describes midnight as 24:00,\nand the first hour of each day starts at 1:00. `qualR` transform it to get the time in 00-23 hour notation, for that reason you'll get `NA` at 00:00 of your first downloaded day. So, consider download one day before your study period.\n* To pad-out with `NA` when there is a missing date, `qualR` \"tricks\" the date\ninformation, an assume it's on **UTC** (when in reality it's on **\"America/Sao_Paulo\"** time).\nThis avoids problems with merging data frames and also with Daylight saving time (DST) issues.\n Beware of this,when dealing with study periods that include **DST**.\n It always a good idea, to double check by retrieving the suspicious date from CETESB QUALAR system.\n* Take into account that in CETESB data, the hourly averaged is the mean **until the  hour**.\nThat is, a concentration value for **22:00 is the mean from 21:01 to 22:00**.\n* Consider the previous three points if you need to change from local time to UTC.\n* Currently, MonitorAr only has data until March, 2021.\n\n## Code of Conduct\n\nPlease note that this package is released with a [Contributor Code of Conduct](https://ropensci.org/code-of-conduct/).\nBy contributing to this project, you agree to abide by its terms.\n\n## Acknowledgments\n\nThanks to [CETESB](https://cetesb.sp.gov.br/ar/) and to [MonitorAr Program](https://www.rio.rj.gov.br/web/smac/monitorar-rio1) for make public this atmospheric data.\n\nThis work was supported by the Wellcome Trust [grant number 216087/Z/19/Z].\nWe acknowledge the programs CAPES (Coordenadoria de Aperfeiçoamento de Pessoal de Nível Superior), CNPq (Conselho Nacional de Desenvolvimento Científico e Tecnológico), FAPESP (2016/18438-0 - Fundação de Amparo à Pesquisa do Estado do São Paulo).\n\nFinally, we want to thanks to the [LAPAT-IAG team](http://www.lapat.iag.usp.br/) for test and help to improve `qualR`.\n\n## Last but not least\n\nI hope this package will help you on your research!\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["atmospheric-science","emission"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/950","html_url":"https://ost.ecosyste.ms/projects/950"}