base R
tidyverse
dplyr
Existem “coisas” que já vem no R assim que você instala; e “coisas” que outras pessoas criaram com base no que já veio no R e que você precisa instalar.
base R
Para “chamar” funções, usamos a notação:
()
Funções recebem “argumentos”; e cada argumento recebe “valores”.
<-
Os nomes devem obedecer a certas regras:
_
e .
)Existem certas convenções sobre nomes:
_
A convenção no R é usar o snake_case
A unidade básica do R são os vetores. Existem dois tipos (mais um) de vetores:
NULL
: É o não-vetor, ou um vetor de tamanho 0c()
é muito importante para os vetores. Ela serve para combinar valores dentro de si.Qual dos seguintes vetores são atômicos e quais são listas?
Qual dos seguintes vetores são atômicos e quais são listas?
O que vocês acham do seguinte vetor? Ele é um vetor atômico ou uma lista?
O que vocês acham do seguinte vetor? Ele é um vetor atômico ou uma lista?
O que vocês acham dos seguintes vetores? São vetores atômicos ou listas?
O que vocês acham dos seguintes vetores? São vetores atômicos ou listas?
base R
chamada typeof()
. Ela checa o tipo de vetores.<-
. Ele servia para “colocar” um valor “dentro” um objeto.=
<-
Podemos agora comparar objetos entre si. Todas as comparações resultam em uma avaliação do tipo TRUE/FALSE
.
Algumas comparações possíveis são:
Para baixar pacotes usamos a seguinte função nativa (do base R):
A lista de todos pacotes possíveis que podem entrar em “nome do pacote” está disponível no CRAN (Comprehensive R Archive Network):
https://cran.r-project.org/web/packages/available_packages_by_name.html
remotes
.O que colocar no argumento repo
?
O que colocar no argumento repo
?
Um pacote contém funções e dados.
Ao invés de puxarmos uma única função de um pacote ou uma única base de dados, podemos puxar tudo de uma vez.
Repare na diferença de sintaxe
library(pacote)
antes, então não precisamos dizer o nome do pacote, seguido de ::
.Com base no seguinte modelo que vimos, responda:
baseR
e as funções do tidyverse
tidyverse
e não com o baseR
. Hoje, iremos ver o primeiro pacote : dplyr
filter()
, mas vamos usar a função dplyr::filter()
apenas. Elas possuem sintaxes diferentes.dplyr::filter()
funciona para “filtrar” linhas de uma base, mantendo apenas aquelas que satisfizerem determinadas condições. [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
[20] "t" "u" "v" "w" "x" "y" "z"
character
, double
, integer
ou logical
?id
das linhas, isto é, as letras correspondentes a cada linha.id
das linhas, isto é, as letras correspondentes a cada linha.id
das linhas, isto é, as letras correspondentes a cada linha.id
das linhas, isto é, as letras correspondentes a cada linha.id
das linhas, isto é, as letras correspondentes a cada linha.id
das linhas, isto é, as letras correspondentes a cada linha.dplyr::filter()
funciona com a seguinte sintaxe:dplyr::filter()
por trás?dplyr::select()
mantém todas as linhas, mas exclui as colunas que você não selecionar.dplyr::mutate()
é uma das funções mais importantes. Ele nos permite modificar colunas já existentes ou adicionar/criar colunas novas na base.da1 <- tibble::tibble(
letras = letters[1:10],
numeros = 1:10,
logicos = c(T, F, T, T, F, F, T, F, T, T)
)
# sem pipe
da2 <- dplyr::mutate(da1, duplicados = numeros * 2)
da3 <- dplyr::mutate(da2, frases = paste0("Letra terminada em: ", letras))
da_final <- dplyr::select(da3,letras, frases, numeros, duplicados, logicos)
# com pipe
da1 |>
dplyr::mutate(
duplicados = numeros *2
) |>
dplyr::mutate(
frases = paste0("Letra terminada em: ", letras)
) |>
dplyr::select(letras, frases, numeros, duplicados, logicos)
magrittr
(outro pacote do conjunto tidyverse
) e tinha essa cara:crtl
+ shift
+ m
(tudo ao mesmo tempo). Ao pressionar estas teclas aparece, via de regra, o pipe antigo %>%
magrittr
. Este é um caso em que não é possível usar a “função” do pacote pelo método: magrittr::%>%
. Sempre é necessário carregar a biblioteca antes.%>%
pelo |>
. Você faz isso em Tools > Global Options > Code > Use native pipe operator |> (requires R 4.1+)dplyr::distinct()
dplyr::count()
dplyr::summarise()
é uma das funções mais úteis. Ela resume várias linhas.dplyr::summarise()
é normalmente é usado junto da função dplyr::group_by()
dplyr::group_by()
é usado, precisamos usar o dplyr::ungroup()
depois.summarise()
fica agrupado.set.seed(3)
da3 <- tibble::tibble(
a = c("a", "a", "a", "a", "a", "b", "b", "c", "c", "c"),
b = sample(1:10, 10, replace=T),
c = sample(c(TRUE, FALSE), 10, replace=T)
)
da3 |>
dplyr::group_by(a) |>
dplyr::summarise(
somatoria = all(c)
) |>
dplyr::ungroup()
# A tibble: 3 × 2
a somatoria
<chr> <lgl>
1 a FALSE
2 b FALSE
3 c FALSE
dplyr::arrange()
set.seed(3)
da3 <- tibble::tibble(
a = c("a", "a", "a", "a", "a", "b", "b", "c", "c", "c"),
b = sample(1:10, 10, replace=T)
)
da3 |>
dplyr::group_by(a) |>
dplyr::summarise(
somatoria = sum(b)
) |>
dplyr::ungroup() |>
dplyr::arrange(somatoria)
# A tibble: 3 × 2
a somatoria
<chr> <int>
1 b 16
2 c 21
3 a 36
set.seed(3)
da3 <- tibble::tibble(
a = c("a", "a", "a", "a", "a", "b", "b", "c", "c", "c"),
b = sample(1:10, 10, replace=T)
)
da3 |>
dplyr::group_by(a) |>
dplyr::summarise(
somatoria = sum(b)
) |>
dplyr::ungroup() |>
dplyr::arrange(desc(somatoria))
# A tibble: 3 × 2
a somatoria
<chr> <int>
1 a 36
2 c 21
3 b 16
character
, ela vai ordenar de forma alfabética.set.seed(3)
da3 <- tibble::tibble(
a = c("a", "a", "a", "a", "a", "b", "b", "c", "c", "c"),
b = sample(1:10, 10, replace=T)
)
da3 |>
dplyr::arrange(b, a)
# A tibble: 10 × 2
a b
<chr> <int>
1 a 4
2 c 4
3 a 5
4 a 7
5 c 7
6 b 8
7 b 8
8 a 10
9 a 10
10 c 10