Abstract
This is an undergrad student level instruction for class use.This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
License: CC BY-SA 4.0
Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Economia Regional: Rotina rápida para associar datasets em R. Campo Grande-MS,Brasil: RStudio/Rpubs, 2021. Disponível em <http://rpubs.com/amrofi/Regional_Economics_associate>.
Segue uma rotina rápida para comparar dois data.frames e gerar uma coluna indicadora de quando o dado constar nos dois. A ideia é comparar colunas dos dois datasets e resultar em 1 quando estiver nos dois e 0 quando não estiver.
Essa rotina foi fornecida pelo Denis Oliveira Rodrigues no grupo do Facebook R - Brasil Programadores em 17/05/2021.
# Rotina rápida para comparar dataframes e associar dummy
x1 <- data.frame(cpf = c(112221, 142214, 121412))
x2 <- data.frame(cpf = c(121412, 145177, 464556, 142214))
x2$indicadora <- ifelse(x2$cpf %in% x1$cpf, 1, 0)
x2$indicadora
[1] 1 0 0 1
print(x2)
cpf indicadora
1 121412 1
2 145177 0
3 464556 0
4 142214 1
Primeiro, chamamos os dados. Atentar para a presença de coluna de Total e para a linha do Total. Os dados foram colocados embedded no code.
ICN_Sala <- structure(list(Munic = c("Acorizal", "Agua Boa", "Alta Floresta", "Alto Araguaia",
"Alto Boa Vista", "Alto Garcas", "Alto Paraguai", "Alto Taquari", "Apiacas",
"Araguaiana", "Araguainha", "Araputanga", "Arenapolis", "Aripuana", "Barao de Melgaco",
"Barra do Bugres", "Barra do Garcas", "Bom Jesus do Araguaia", "Brasnorte", "Caceres",
"Campinapolis", "Campo Novo do Parecis", "Campo Verde", "Campos de Julio", "Canabrava do Norte",
"Canarana", "Carlinda", "Castanheira", "Chapada dos Guimaraes", "Claudia", "Cocalinho",
"Colider", "Colniza", "Comodoro", "Confresa", "Conquista D'Oeste", "Cotriguacu",
"Cuiaba", "Curvelândia", "Denise", "Diamantino", "Dom Aquino", "Feliz Natal",
"Figueiropolis D Oeste", "Gaucha do Norte", "General Carneiro", "Gloria D'oeste",
"Guaranta do Norte", "Guiratinga", "Indiavai", "Ipiranga do Norte", "Itanhanga",
"Itauba", "Itiquira", "Jaciara", "Jangada", "Jauru", "Juara", "Juina", "Juruena",
"Juscimeira", "Lambari D'oeste", "Lucas do Rio Verde", "Luciara", "Vila Bela da Santissima Trindade",
"Marcelandia", "Matupa", "Mirassol Doeste", "Nobres", "Nortelandia", "Nossa Senhora do Livramento",
"Nova Bandeirantes", "Nova Nazaré", "Nova Lacerda", "Nova Santa Helena", "Nova Brasilandia",
"Nova Canaa do Norte", "Nova Mutum", "Nova Olimpia", "Nova Ubirata", "Nova Xavantina",
"Novo Mundo", "Novo Horizonte do Norte", "Novo Sao Joaquim", "Paranaita", "Paranatinga",
"Novo Santo Antonio", "Pedra Preta", "Peixoto de Azevedo", "Planalto da Serra",
"Pocone", "Pontal do Araguaia", "Ponte Branca", "Pontes e Lacerda", "Porto Alegre do Norte",
"Porto dos Gauchos", "Porto Esperidiao", "Porto Estrela", "Poxoreo", "Primavera do Leste",
"Querencia", "Sao Jose dos Quatro Marcos", "Reserva do Cabacal", "Ribeirao Cascalheira",
"Ribeiraozinho", "Rio Branco", "Santa Carmem", "Santo Afonso", "Sao Jose do Povo",
"Sao Jose do Rio Claro", "Sao Jose do Xingu", "Sao Pedro da Cipa", "Rondolandia",
"Rondonopolis", "Rosario Oeste", "Santa Cruz do Xingu", "Salto do Ceu", "Santa Rita do Trivelato",
"Santa Terezinha", "Santo Antonio do Leste", "Santo Antonio do Leverger", "Sao Felix do Araguaia",
"Sapezal", "Serra Nova Dourada", "Sinop", "Sorriso", "Tabapora", "Tangara da Serra",
"Tapurah", "Terra Nova do Norte", "Tesouro", "Torixoreu", "Uniao do Sul", "Vale de São Domingos",
"Varzea Grande", "Vera", "Vila Rica", "Nova Guarita", "Nova Marilandia", "Nova Maringa",
"Nova Monte Verde", "Total"), bovinos = c(45, 551, 1272, 215, 72, 94, 36, 35,
196, 260, 19, 373, 63, 335, 152, 411, 1020, 63, 253, 1412, 171, 42, 107, 8, 57,
481, 173, 147, 149, 27, 465, 239, 35, 475, 85, 100, 79, 771, 9, 99, 115, 152,
26, 88, 157, 102, 59, 172, 169, 75, 46, 5, 208, 274, 157, 56, 202, 884, 420,
140, 252, 190, 6, 29, 1022, 201, 172, 265, 76, 26, 195, 255, 74, 186, 141, 141,
402, 177, 103, 81, 363, 229, 24, 140, 340, 542, 10, 409, 172, 110, 491, 123,
15, 1113, 31, 167, 529, 128, 422, 174, 254, 168, 6, 254, 15, 93, 40, 60, 63,
151, 427, 11, 244, 809, 188, 70, 88, 22, 238, 59, 575, 258, 31, 20, 205, 54,
159, 644, 108, 104, 97, 143, 36, 11, 196, 41, 440, 41, 86, 131, 429, 30698),
Total = c(238, 3633, 9571, 2588, 408, 2072, 295, 1878, 1142, 568, 234, 2876,
854, 2883, 492, 5130, 11613, 501, 2618, 11764, 768, 6883, 7311, 1367, 393,
2988, 756, 629, 1997, 2008, 991, 4499, 1870, 2794, 1420, 589, 1230, 204915,
256, 780, 6371, 1420, 1660, 383, 756, 718, 273, 2818, 1321, 279, 1031, 405,
946, 3204, 5011, 718, 853, 5303, 5370, 1086, 1127, 1038, 14104, 224, 1946,
1830, 2742, 4911, 1997, 579, 892, 1036, 254, 794, 487, 437, 1295, 10337,
4408, 2049, 1937, 632, 226, 1586, 1173, 3289, 84, 3946, 1812, 337, 2782,
549, 118, 5920, 638, 916, 1492, 401, 1955, 13069, 2436, 2448, 186, 815, 251,
488, 631, 290, 304, 2704, 946, 938, 716, 41066, 1465, 292, 449, 798, 748,
732, 3946, 1404, 5831, 79, 25469, 16098, 1554, 17268, 2677, 977, 392, 559,
548, 37, 38718, 1747, 2198, 302, 450, 1043, 1382, 622459)), row.names = c(NA,
-142L), class = c("tbl_df", "tbl", "data.frame"))
# recortei apenas alguns municipios
knitr::kable(ICN_Sala[c(35:45, 110:135), ], caption = "Tabela ICN_Sala com alguns municípios")
Munic | bovinos | Total | |
---|---|---|---|
35 | Confresa | 85 | 1420 |
36 | Conquista D’Oeste | 100 | 589 |
37 | Cotriguacu | 79 | 1230 |
38 | Cuiaba | 771 | 204915 |
39 | Curvelândia | 9 | 256 |
40 | Denise | 99 | 780 |
41 | Diamantino | 115 | 6371 |
42 | Dom Aquino | 152 | 1420 |
43 | Feliz Natal | 26 | 1660 |
44 | Figueiropolis D Oeste | 88 | 383 |
45 | Gaucha do Norte | 157 | 756 |
110 | Sao Jose do Rio Claro | 151 | 2704 |
111 | Sao Jose do Xingu | 427 | 946 |
112 | Sao Pedro da Cipa | 11 | 938 |
113 | Rondolandia | 244 | 716 |
114 | Rondonopolis | 809 | 41066 |
115 | Rosario Oeste | 188 | 1465 |
116 | Santa Cruz do Xingu | 70 | 292 |
117 | Salto do Ceu | 88 | 449 |
118 | Santa Rita do Trivelato | 22 | 798 |
119 | Santa Terezinha | 238 | 748 |
120 | Santo Antonio do Leste | 59 | 732 |
121 | Santo Antonio do Leverger | 575 | 3946 |
122 | Sao Felix do Araguaia | 258 | 1404 |
123 | Sapezal | 31 | 5831 |
124 | Serra Nova Dourada | 20 | 79 |
125 | Sinop | 205 | 25469 |
126 | Sorriso | 54 | 16098 |
127 | Tabapora | 159 | 1554 |
128 | Tangara da Serra | 644 | 17268 |
129 | Tapurah | 108 | 2677 |
130 | Terra Nova do Norte | 104 | 977 |
131 | Tesouro | 97 | 392 |
132 | Torixoreu | 143 | 559 |
133 | Uniao do Sul | 36 | 548 |
134 | Vale de São Domingos | 11 | 37 |
135 | Varzea Grande | 196 | 38718 |
# Agora a condicao: Cuiabá, Rondonópolis, Sinop e Várzea Grande com dummy 1 e 0
# para os demais atentar para acentos, cedilhas etc
x3 <- data.frame(Munic = c("Cuiaba", "Rondonopolis", "Sinop", "Varzea Grande"))
print(x3)
Munic
1 Cuiaba
2 Rondonopolis
3 Sinop
4 Varzea Grande
ICN_Sala$indicadora <- ifelse(ICN_Sala$Munic %in% x3$Munic, 1, 0)
ICN_Sala$indicadora
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[38] 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[ reached getOption("max.print") -- omitted 42 entries ]
options(max.print = 1e+06)
knitr::kable(ICN_Sala[c(35:45, 110:135), ], caption = "Tabela ICN_Sala com indicadora de alguns municípios")
Munic | bovinos | Total | indicadora | |
---|---|---|---|---|
35 | Confresa | 85 | 1420 | 0 |
36 | Conquista D’Oeste | 100 | 589 | 0 |
37 | Cotriguacu | 79 | 1230 | 0 |
38 | Cuiaba | 771 | 204915 | 1 |
39 | Curvelândia | 9 | 256 | 0 |
40 | Denise | 99 | 780 | 0 |
41 | Diamantino | 115 | 6371 | 0 |
42 | Dom Aquino | 152 | 1420 | 0 |
43 | Feliz Natal | 26 | 1660 | 0 |
44 | Figueiropolis D Oeste | 88 | 383 | 0 |
45 | Gaucha do Norte | 157 | 756 | 0 |
110 | Sao Jose do Rio Claro | 151 | 2704 | 0 |
111 | Sao Jose do Xingu | 427 | 946 | 0 |
112 | Sao Pedro da Cipa | 11 | 938 | 0 |
113 | Rondolandia | 244 | 716 | 0 |
114 | Rondonopolis | 809 | 41066 | 1 |
115 | Rosario Oeste | 188 | 1465 | 0 |
116 | Santa Cruz do Xingu | 70 | 292 | 0 |
117 | Salto do Ceu | 88 | 449 | 0 |
118 | Santa Rita do Trivelato | 22 | 798 | 0 |
119 | Santa Terezinha | 238 | 748 | 0 |
120 | Santo Antonio do Leste | 59 | 732 | 0 |
121 | Santo Antonio do Leverger | 575 | 3946 | 0 |
122 | Sao Felix do Araguaia | 258 | 1404 | 0 |
123 | Sapezal | 31 | 5831 | 0 |
124 | Serra Nova Dourada | 20 | 79 | 0 |
125 | Sinop | 205 | 25469 | 1 |
126 | Sorriso | 54 | 16098 | 0 |
127 | Tabapora | 159 | 1554 | 0 |
128 | Tangara da Serra | 644 | 17268 | 0 |
129 | Tapurah | 108 | 2677 | 0 |
130 | Terra Nova do Norte | 104 | 977 | 0 |
131 | Tesouro | 97 | 392 | 0 |
132 | Torixoreu | 143 | 559 | 0 |
133 | Uniao do Sul | 36 | 548 | 0 |
134 | Vale de São Domingos | 11 | 37 | 0 |
135 | Varzea Grande | 196 | 38718 | 1 |