Criando vetores - por exemplo a função c() pode ser usado para criar os objetos dos vetores
Empresa <- c("Apple", "Samsumg", "Xioami", "LG", "Motorola") ##Caracteres
Qtd <- c(90, 95, 85, 60, 70) ##Numérico
x <- c(TRUE, FALSE) ##Lógico
#ou
s <- c(T, F) ##Lógico
t <- c(2015:2020) ##Inteiro
y <- c(1+0i, 2+4i) ##Complexo
Usando a funçao vector
t <- vector("numeric", length = 3)
t
## [1] 0 0 0
Dá pra criar objetos mistos no vetor
x <- c("Apple",90,TRUE)
Podemos explicitamente coagir objetos transformando-os de uma classe em outra, usando funções que geralmente começam com a palavra “as”.
t <- c(2015:2020)
class(t)
## [1] "integer"
as.numeric(t)
## [1] 2015 2016 2017 2018 2019 2020
as.logical(t)
## [1] TRUE TRUE TRUE TRUE TRUE TRUE
as.character(t)
## [1] "2015" "2016" "2017" "2018" "2019" "2020"
É um tipo de vetor que pode conter elementos de diferentes classes
x <- list("Apple", 95, TRUE, 1+4i)
x
## [[1]]
## [1] "Apple"
##
## [[2]]
## [1] 95
##
## [[3]]
## [1] TRUE
##
## [[4]]
## [1] 1+4i
Matrizes são vetores com uma dimensão atribuída
m <- matrix(nrow = 3, ncol = 5)
m
## [,1] [,2] [,3] [,4] [,5]
## [1,] NA NA NA NA NA
## [2,] NA NA NA NA NA
## [3,] NA NA NA NA NA
dim(m)
## [1] 3 5
attributes(m)
## $dim
## [1] 3 5
m <- matrix(1:6, nrow = 2, ncol = 3)
m
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
Ajeitando a coluna com o codigo dim()
m <- 1:10
dim(m) <- c(2,5)
m
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
Forma bem comum de criar uma matriz é por meio da vinculação de colunas ou linhas. Assim, essa atribuição por colunas ou por linhas pode ser feita por meio das funções “cbind()” e “rbind()”, respectivamente.
Empresa <- c("Apple", "Samsumg", "Xioami", "LG", "Motorola") ##Caracteres
Qtd <- c(90, 95, 85, 60, 70)
cbind (Empresa, Qtd)
## Empresa Qtd
## [1,] "Apple" "90"
## [2,] "Samsumg" "95"
## [3,] "Xioami" "85"
## [4,] "LG" "60"
## [5,] "Motorola" "70"
rbind (Empresa, Qtd)
## [,1] [,2] [,3] [,4] [,5]
## Empresa "Apple" "Samsumg" "Xioami" "LG" "Motorola"
## Qtd "90" "95" "85" "60" "70"
Um fator é um tipo especial de vetor, que é usado para armazenar dados categóricos. Existem dois tipos de fator: ordenado (ordered) e desordenado (unordered), então pode-se pensar neles como sendo estruturas para armazenar dados que possuem rótulos categorizando-os mas, sem uma ordem determinada.
Time <- factor(c("W","W","W","W","L","L","L","L","W","L","W","L","L","W","W","W",
"W","W","W","W","W","L","W","W","W","W","L","L","L"))
Time
## [1] W W W W L L L L W L W L L W W W W W W W W L W W W W L L L
## Levels: L W
table(Time)
## Time
## L W
## 11 18
unclass(Time)
## [1] 2 2 2 2 1 1 1 1 2 1 2 1 1 2 2 2 2 2 2 2 2 1 2 2 2 2 1 1 1
## attr(,"levels")
## [1] "L" "W"
Esses valores no R são denotados por NA or NaN. NaN é utilizado para operações matemáticas indefinidas, enquanto NA é usado para o restante dos casos.
x <- c(NaN,152, 256, 465, 521, NA, 740, 912, NA)
is.na(x)
## [1] TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
is.nan(x)
## [1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Data frames, que são utilizados em R para armazenar dados em forma de tabela.
Empresa <- c("Apple", "Samsumg", "Xioami", "LG", "Motorola")
Qtd <- c(90, 95, 85, 60, 70)
Dados <- data.frame(CNPJ = Empresa, Vendas = Qtd)
Dados
Objetos em R também podem ser nomeados.
Qtd <- c(90, 95, 85, 60, 70)
names(Qtd) <- c("Apple", "Samsumg", "Xioami", "LG", "Motorola")
Qtd
## Apple Samsumg Xioami LG Motorola
## 90 95 85 60 70
x <- c(950,152, NA, 465, 521, 686, 740, 912, 846)
m <- matrix(x, nrow = 3, ncol = 3)
dimnames(m) <- list(c("BOS", "TOR", "SF"), c("NYY", "WSH", "LAD"))
m
## NYY WSH LAD
## BOS 950 465 740
## TOR 152 521 912
## SF NA 686 846
Existem algumas operações que você pode usar para extrair subconjuntos de diferentes tipos de objetos do R. Tem o colchete simples [ ], O colchete duplo [[ ]]. Os princípios básicos que temos que lembrar é que o colchete simples sempre retorno um objeto da mesma classe do original. O operador de colchete duplo é usado para extrair elementos de uma lista um DataFrame. Ele só pode ser usado para extrair um único elemento do objeto que deve ser uma lista ou data frame.
Empresa <- c("Apple", "Samsumg", "Xioami", "LG", "Motorola")
Qtd2019 <- c(90, 95, 85, 60, 70)
Qtd2020 <- c(85, 95, 90, 55, 75)
rbind(Empresa, Qtd2019, Qtd2020)
## [,1] [,2] [,3] [,4] [,5]
## Empresa "Apple" "Samsumg" "Xioami" "LG" "Motorola"
## Qtd2019 "90" "95" "85" "60" "70"
## Qtd2020 "85" "95" "90" "55" "75"
x <- list(CNPJ = Empresa, "2019" = Qtd2019, "2020" = Qtd2020)
x[1]
## $CNPJ
## [1] "Apple" "Samsumg" "Xioami" "LG" "Motorola"
x[[1]]
## [1] "Apple" "Samsumg" "Xioami" "LG" "Motorola"
x$"2019"
## [1] 90 95 85 60 70
x[["2019"]]
## [1] 90 95 85 60 70
x["2019"]
## $`2019`
## [1] 90 95 85 60 70
x[[c(1,4)]]
## [1] "LG"
x[[1]][[4]]
## [1] "LG"
y <- matrix(Empresa, Qtd2019, 5,2)
y[1]
## [1] "Apple"
y[1, , drop = FALSE]
## [,1] [,2] [,3] [,4] [,5]
## [1,] "Apple" "Samsumg" "Xioami" "LG" "Motorola"
# Remover os NAs
x <- c(1,2,NA,4,NA,5)
bad <- is.na(x)
x[!bad]
## [1] 1 2 4 5
airquality [1:6, ]
good <- complete.cases(airquality)
airquality [good, ][1:6, ]
Marca <- c("Apple", "Samsumg", "Xioami", "LG", "Motorola")
Joao <- c(90, 95, 85, 60, 70)
Maria <- c(95, 90, 80,60,75)
m <- rbind (Joao, Maria)
colnames(m) <- paste(Marca)
m
## Apple Samsumg Xioami LG Motorola
## Joao 90 95 85 60 70
## Maria 95 90 80 60 75
A <- rbind(Joao + Maria)
colnames(A) <- paste(Marca)
A
## Apple Samsumg Xioami LG Motorola
## [1,] 185 185 165 120 145
B <- rbind(Joao/Maria)
colnames(B) <- paste(Marca)
B
## Apple Samsumg Xioami LG Motorola
## [1,] 0.9473684 1.055556 1.0625 1 0.9333333
#verdadeira multiplicação de matrizes
x <- matrix(1:4, 2,2)
y <- matrix(c(10, 4), 2,1)
x%*%y
## [,1]
## [1,] 22
## [2,] 36