@@ -33,7 +33,7 @@ editor: source
33
33
34
34
### Aula 24 - Tabela
35
35
36
- Mais sobre o pacote ` flextable ` : título e fontes
36
+ Mais sobre o pacote ` flextable ` : mesclar células e condicionamento
37
37
38
38
## Leituras para aprofundamento
39
39
@@ -56,7 +56,6 @@ knitr::opts_chunk$set("ft.shadow" = FALSE)
56
56
# importando a base
57
57
dados_covid <- import("https://covid19.who.int/WHO-COVID-19-global-data.csv", na.strings = "")
58
58
59
- options(OutDec= ".")
60
59
```
61
60
62
61
## Dados de Hoje
@@ -67,45 +66,42 @@ options(OutDec= ".")
67
66
68
67
``` {r out.width="50%"}
69
68
70
- paises <- c("Brazil", "Italy", "France", "Argentina ")
69
+ paises <- c("Brazil", "Italy", "France", "Uruguay ")
71
70
72
- letalidade_Brasil_Italia <- dados_covid %>%
71
+ letalidade <- dados_covid %>%
73
72
filter(Country %in% paises,
74
- New_cases>0,
75
- !is.na(New_cases)) %>%
73
+ New_cases>0) %>%
76
74
separate(Date_reported, c("Ano", "Mês", "Dia")) %>%
75
+ filter(Ano=="2023"|Ano=="2022") %>%
77
76
mutate(Country=case_when(
78
77
Country=="Brazil" ~ "Brasil",
79
78
Country=="Italy" ~ "Itália",
80
- Country=="France" ~ "França")) %>%
79
+ Country=="France" ~ "França",
80
+ Country=="Uruguay" ~ "Uruguai")) %>%
81
81
mutate(letalidade_diaria = New_deaths/New_cases*100)%>%
82
- mutate(Continente = ifelse(Country=="Brazil "|Country=="Argentina ",
82
+ mutate(Continente = ifelse(Country=="Brasil "|Country=="Uruguai ",
83
83
"América do Sul", "Europa")) %>%
84
- group_by(Continente, Ano, Country) %>%
85
- summarise(letalidade_media = mean(letalidade_diaria,
86
- na.rm=T),
87
- desvio_padrao = sd(letalidade_diaria,
88
- na.rm=T ),
89
- Casos_maximo = max(New_cases,
90
- na.rm=T),
91
- Obitos_maximo = max(New_deaths,
92
- na.rm=T)) %>%
84
+ group_by( Ano, Continente, Country) %>%
85
+ summarise(letalidade_media = mean(letalidade_diaria),
86
+ desvio_padrao = sd(letalidade_diaria ),
87
+ Casos_maximo = max(New_cases),
88
+ Obitos_maximo = max(New_deaths)) %>%
93
89
ungroup() %>%
94
90
mutate_if(is.numeric, ~format(., big.mark=".", decimal.mark=",", digits=2))
95
91
96
92
97
- letalidade_Brasil_Italia
93
+ letalidade
98
94
```
99
95
100
96
## flextable
101
97
102
98
``` {r eval=F}
103
- flextable(letalidade_Brasil_Italia )
99
+ flextable(letalidade )
104
100
```
105
101
106
102
``` {r include=FALSE}
107
- flextable( letalidade_Brasil_Italia ) %>%
108
- save_as_image("../img/tab1.png")
103
+ flextable( letalidade ) %>%
104
+ save_as_image("../../ img/tab1.png")
109
105
```
110
106
111
107
![ ] ( ../img/tab1.png ) {fig-alt="Tab1" fig-align="center" width="150%"}
@@ -116,182 +112,182 @@ flextable( letalidade_Brasil_Italia) %>%
116
112
117
113
``` {r eval=F}
118
114
119
- tab1 <- flextable( letalidade_Brasil_Italia ) %>%
115
+ tab1 <- flextable( letalidade ) %>%
120
116
autofit() %>%
121
117
align(align="r", part="all") %>%
122
118
align(align="c", j=c(1,2), part="all") %>%
123
119
bold(part="header") %>%
124
120
bold(j=c(1,2)) %>%
125
- bg(bg="lightgrey", j=c(1,2), part="all") %>%
121
+ bg(bg="lightgrey", j=1, part="all") %>%
122
+ bg(bg="grey", j=c(2,3), part="all") %>%
126
123
hline(i=c(2,4,6)) %>%
127
- vline(j=2)
124
+ vline(j=c(1,2,3)) %>%
125
+ set_header_labels(
126
+ Country="País",
127
+ letalidade_media="Letalidade Média Diária",
128
+ desvio_padrao="Desvio Padrão",
129
+ Casos_maximo="Máximo de casos em 24h",
130
+ Obitos_maximo="Máximo de óbitos em 24h")
131
+
128
132
129
133
tab1
130
134
```
131
135
132
136
``` {r include=FALSE }
133
- tab1 <- flextable( letalidade_Brasil_Italia ) %>%
137
+ tab1 <- flextable( letalidade ) %>%
134
138
autofit() %>%
135
139
align(align="r", part="all") %>%
136
140
align(align="c", j=c(1,2), part="all") %>%
137
141
bold(part="header") %>%
138
142
bold(j=c(1,2)) %>%
139
- bg(bg="lightgrey", j=c(1,2), part="all") %>%
143
+ bg(bg="lightgrey", j=1, part="all") %>%
144
+ bg(bg="grey", j=c(2,3), part="all") %>%
140
145
hline(i=c(2,4,6)) %>%
141
- vline(j=2)
142
-
143
-
144
- tab1 %>% save_as_image("../img/tab2.png")
145
- ```
146
-
147
- ![ ] ( ../img/tab2.png ) {fig-alt="Tab2" fig-align="center" width="100%"}
148
-
149
- ## Título e cabeçalho
150
-
151
- - set_header_labels()
152
-
153
- . . .
154
-
155
- ``` {r eval=F}
156
-
157
- tab1 %>%
146
+ vline(j=c(1,2,3)) %>%
158
147
set_header_labels(
159
148
Country="País",
160
149
letalidade_media="Letalidade Média Diária",
161
150
desvio_padrao="Desvio Padrão",
162
151
Casos_maximo="Máximo de casos em 24h",
163
152
Obitos_maximo="Máximo de óbitos em 24h")
164
-
165
153
154
+
155
+ tab1 %>% save_as_image("../img/tab2.png")
166
156
```
167
157
168
- ``` {r include=F}
169
- tab1 %>%
170
- set_header_labels(
171
- Country="País",
172
- letalidade_media="Letalidade Média Diária",
173
- desvio_padrao="Desvio Padrão",
174
- Casos_maximo="Máximo de casos em 24h",
175
- Obitos_maximo="Máximo de óbitos em 24h") %>%
176
- save_as_image("../img/tab4.png")
177
- ```
178
-
179
- ![ ] ( ../img/tab4.png ) {fig-alt="Tab4" fig-align="center" width="100%"}
180
-
181
- - Quebrar a linha onde eu desejar: "\\ n"
158
+ ![ ] ( ../img/tab2.png ) {fig-alt="Tab2" fig-align="center" width="100%"}
182
159
183
- . . .
160
+ ## Mesclando celulas
184
161
185
162
``` {r eval=F}
186
163
187
164
tab2 <- tab1 %>%
188
- set_header_labels(
189
- Country="País",
190
- letalidade_media="Letalidade Média Diária",
191
- desvio_padrao="Desvio\n Padrão",
192
- Casos_maximo="Máximo de casos em 24h",
193
- Obitos_maximo="Máximo de óbitos em 24h")
194
-
165
+ merge_v(j=c(1,2))
166
+
195
167
tab2
196
168
```
197
169
198
170
``` {r include=F}
199
- tab2 <- tab1 %>%
200
- set_header_labels(
201
- Country="País",
202
- letalidade_media="Letalidade Média Diária",
203
- desvio_padrao="Desvio\n Padrão",
204
- Casos_maximo="Máximo de casos em 24h",
205
- Obitos_maximo="Máximo de óbitos em 24h")
206
-
207
- tab2 %>% save_as_image("../img/tab5.png")
208
171
172
+ tab2 <- tab1 %>%
173
+ merge_v(j=c(1,2)) %>%
174
+ fix_border_issues(part="body")
209
175
176
+ tab1 %>% save_as_docx(path="../img/tab3.docx")
210
177
```
211
178
212
- ![ ] ( ../img/tab5 .png ) {fig-alt="Tab4 " fig-align="center" width="100%"}
179
+ ![ ] ( ../img/tab3 .png ) {fig-alt="Tab3 " fig-align="center" width="100%"}
213
180
214
- ## Cabeçalho Extra
181
+ - Procure sobre a função fix_border_issues()
215
182
216
- - add_header_row()
217
-
218
- . . .
183
+ ## Coloração condicional
219
184
220
185
``` {r eval=F}
221
186
tab3 <- tab2 %>%
222
- add_header_row(values = c("Tempo/Lugar", "Indicadores"),
223
- colwidths = c(2,5))
187
+ bg(i = ~ Country =="Brasil" , # nome da coluna original
188
+ j = c(6,7),
189
+ bg="red")
224
190
225
191
tab3
226
192
```
227
193
228
- ``` {r include=F }
194
+ ``` {r include=FALSE }
229
195
tab3 <- tab2 %>%
230
- add_header_row(values = c("Tempo/Lugar", "Indicadores"),
231
- colwidths = c(2,5)) %>%
232
- align(align="c", part="header")
233
-
234
- tab3 %>% save_as_image("../img/tab6.png")
235
-
196
+ bg(i = ~ Country =="Brasil" , # nome da coluna original
197
+ j = c(6,7),
198
+ bg="red")
236
199
200
+ tab3 %>% save_as_image("../img/tab4.png")
237
201
```
238
202
239
- ![ ] ( ../img/tab6.png ) {fig-alt="Tab4" fig-align="center" width="100%"}
240
-
241
- ## Título
242
-
243
- - set_caption
244
- - Cabeçalho YAML
245
- - output: officedown::rdocx_document
246
-
247
- . . .
248
-
249
- ``` {r}
203
+ ![ ] ( ../img/tab4.png ) {fig-alt="Tab4" fig-align="center" width="100%"}
250
204
251
- run_num <- run_autonum(seq_id = "tab", pre_label = "Tabela",
252
- post_label=". ", bkm = "anytable")
205
+ ## Coloração condicional
253
206
254
- tab3 %>%
255
- set_caption("Título da tabela",
256
- autonum=run_num )
207
+ ``` {r echo=F}
208
+ tab2_num <- dados_covid %>%
209
+ filter(Country %in% paises,
210
+ New_cases>0) %>%
211
+ separate(Date_reported, c("Ano", "Mês", "Dia")) %>%
212
+ filter(Ano=="2023"|Ano=="2022") %>%
213
+ mutate(Country=case_when(
214
+ Country=="Brazil" ~ "Brasil",
215
+ Country=="Italy" ~ "Itália",
216
+ Country=="France" ~ "França",
217
+ Country=="Uruguay" ~ "Uruguai")) %>%
218
+ mutate(letalidade_diaria = New_deaths/New_cases*100)%>%
219
+ mutate(Continente = ifelse(Country=="Brasil"|Country=="Uruguai",
220
+ "América do Sul", "Europa")) %>%
221
+ group_by( Ano, Continente, Country) %>%
222
+ summarise(letalidade_media = mean(letalidade_diaria),
223
+ desvio_padrao = sd(letalidade_diaria ),
224
+ Casos_maximo = max(New_cases),
225
+ Obitos_maximo = max(New_deaths)) %>%
226
+ ungroup() %>%
227
+ flextable() %>%
228
+ autofit() %>%
229
+ align(align="r", part="all") %>%
230
+ align(align="c", j=c(1,2), part="all") %>%
231
+ bold(part="header") %>%
232
+ bold(j=c(1,2)) %>%
233
+ bg(bg="lightgrey", j=1, part="all") %>%
234
+ bg(bg="grey", j=c(2,3), part="all") %>%
235
+ hline(i=c(2,4,6)) %>%
236
+ vline(j=c(1,2,3)) %>%
237
+ set_header_labels(
238
+ Country="País",
239
+ letalidade_media="Letalidade Média Diária",
240
+ desvio_padrao="Desvio Padrão",
241
+ Casos_maximo="Máximo de casos em 24h",
242
+ Obitos_maximo="Máximo de óbitos em 24h")
257
243
```
258
244
259
- ## Fonte
260
-
261
- - A fonte deve estar instalada no seu computador!
262
-
263
- . . .
264
-
265
245
``` {r eval=F}
266
- tab3 %>% font(part = "all", fontname = "Verdana")
246
+ tab4 <- tab2_num %>%
247
+ bg(i = ~ Casos_maximo >200000 , # nome da coluna original
248
+ bg="yellow") %>%
249
+ colformat_double(decimal.mark = ",",
250
+ digits = 2) %>%
251
+ colformat_int(big.mark = ".")
252
+
253
+ tab4
267
254
```
268
255
269
256
``` {r include=F}
270
- tab4 <- tab3 %>%
271
- font(part = "all", fontname = "Verdana")
257
+ tab4 <- tab2_num %>%
258
+ bg(i = ~ Casos_maximo >200000 , # nome da coluna original
259
+ bg="yellow") %>%
260
+ colformat_double(decimal.mark = ",",
261
+ big.mark = ".",
262
+ digits = 2) %>%
263
+ colformat_int(big.mark = ".")
264
+
265
+ tab4 %>% save_as_image(path="../img/tab5.png")
266
+ ```
272
267
273
- tab4 %>% save_as_image(" ../img/tab7 .png")
268
+ ![ ] ( ../img/tab5 .png ) {fig-alt="Tab3" fig-align="center" width="100%"}
274
269
275
- ```
270
+ ## COMENTÁRIOS
276
271
277
- ![ ] ( ../img/tab7.png ) {fig-alt="Tab4" fig-align="center" width="100%"}
272
+ - Tem que ser o nome original na base! Sugestão: deixe para mudar os nomes só no final
278
273
279
- - Com uma fonte nova
274
+ - Vantagem: Não preciso dizer o número das linhas , ele vai atualizar baseado no valor do banco! Isso é mais reprodutível.
280
275
281
- . . .
276
+ - ** PARA CONDICIONAR SOBRE OS NÚMEROS, O R TEM QUE ESTAR RECONHECENDO COMO NUMÉRICO **
282
277
283
- ``` {r eval=F}
284
- tab3 %>% font(part = "all", fontname = "Poppins")
285
- ```
278
+ - Por isso removi o mutate_if() que haviamos feito no início da manipulação.
279
+ - Há possibilidade de mudar isso na própria tabela.
286
280
287
- ``` {r include=F}
288
- tab5 <- tab3 %>%
289
- font(part = "all", fontname = "Poppins")
281
+ ## Tarefa do fim do módulo
290
282
291
- tab5 %>% save_as_image("../img/tab8.png")
283
+ - Entregar uma tabela em Word (.docx) criada com o ** flextable ** com uma base de dados do seu interesse. O código .Rmd deve ser entregue juntamente com a tabela gerada.
292
284
293
- ```
285
+ - Sugiro não utilizar as mesmas bases que usamos aqui na aula, a não ser que faça uma abordagem muito diferentes das já feitas.
286
+
287
+ - Para chegar na tabela, você deve usar funções de manipulações de dados de acordo como seu objetivo. Deve conter pelo menos alguma manipulação com o * filter()* e com o * mutate()* , ** no mínimo** .
288
+
289
+ - Deve conter pelo menos 3 funções de formatação da tabela.
294
290
295
- ![ ] ( ../img/tab8.png ) {fig-alt="Tab4" fig-align="center" width="100%"}
291
+ - ** Desafio: ** usar funções novas de formatação ou manipulação não apresentadas na aula.
296
292
297
- # Até mais, pessoal !
293
+ # Até o próximo módulo !
0 commit comments