Skip to content

Commit e26cdf0

Browse files
committed
allow to filter state in read_metro_area
1 parent a5aa462 commit e26cdf0

File tree

3 files changed

+44
-4
lines changed

3 files changed

+44
-4
lines changed

r-package/R/read_metro_area.R

+11-3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
#' reference system "SIRGAS2000" and CRS(4674).
1010
#'
1111
#' @param year Numeric. Year of the data in YYYY format. Defaults to `2018`.
12+
#' @param code_state The two-digit code of a state or a two-letter uppercase
13+
#' abbreviation (e.g. 33 or "RJ"). If `code_state="all"` (the
14+
#' default), the function downloads all states.
1215
#' @template simplified
1316
#' @template showProgress
1417
#'
@@ -22,8 +25,10 @@
2225
#' m <- read_metro_area(2005)
2326
#'
2427
#' m <- read_metro_area(2018)
25-
#'
26-
read_metro_area <- function(year=2018, simplified=TRUE, showProgress=TRUE){
28+
read_metro_area <- function(year = 2018,
29+
code_state = "all",
30+
simplified = TRUE,
31+
showProgress = TRUE){
2732

2833
# Get metadata with data url addresses
2934
temp_meta <- select_metadata(geography="metropolitan_area", year=year, simplified=simplified)
@@ -37,5 +42,8 @@ read_metro_area <- function(year=2018, simplified=TRUE, showProgress=TRUE){
3742
# check if download failed
3843
if (is.null(temp_sf)) { return(invisible(NULL)) }
3944

45+
# filter state
46+
temp_sf <- filter_state(temp_sf, code = code_state)
47+
4048
return(temp_sf)
41-
}
49+
}

r-package/man/read_metro_area.Rd

+10-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

r-package/tests/testthat/test-read_metro_area.R

+23
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,24 @@ test_that("read_metro_area", {
1313
test_sf <- read_metro_area(year=2001)
1414
expect_true(is(test_sf, "sf"))
1515

16+
# filter state code
17+
test_sf <- read_metro_area(code_state = 33)
18+
expect_true(is(test_sf, "sf"))
19+
expect_true(33 %in% unique(test_sf$code_state))
20+
21+
test_sf <- read_metro_area(code_state = c(33, 35))
22+
expect_true(is(test_sf, "sf"))
23+
expect_true(all(c(33, 35) %in% unique(test_sf$code_state)))
24+
25+
# filter state abbrev
26+
test_sf <- read_metro_area(code_state = 'RJ')
27+
expect_true(is(test_sf, "sf"))
28+
expect_true('RJ' %in% unique(test_sf$abbrev_state))
29+
30+
test_sf <- read_metro_area(code_state = c('RJ', 'SP'))
31+
expect_true(is(test_sf, "sf"))
32+
expect_true(all(c('RJ', 'SP') %in% unique(test_sf$abbrev_state)))
33+
1634
})
1735

1836

@@ -25,4 +43,9 @@ test_that("read_metro_area", {
2543
expect_error(read_metro_area(year="xxx"))
2644
expect_error(read_metro_area(year=NULL))
2745

46+
# filter state
47+
expect_error(read_metro_area(code_state = c('RJ', 33)))
48+
expect_error(read_metro_area(code_state = 'banana'))
49+
expect_error(read_metro_area(code_state = 999999999))
50+
2851
})

0 commit comments

Comments
 (0)