R é um ambiente de programação com um conjunto integrado de ferramentas de software para análise exploratória, manipulação de dados, cálculos, análises estatísticas e apresentação gráfica.
são chamados de integers. No entanto, integers também são numerics. Textos (ou Strings) são chamados characters. E os valores booleanos são ditos do tipo logics. # character > pergunta <- "qual a resposta para a vida o universo e tudo mais?" # numeric > resposta <- 42 # logic > tenho_dinheiro <- FALSE # verificar o tipo de dado da variável > class(pergunta) [1] "character"
dois vetores em R, ele irá somar os elementos de cada posição. O mesmo vale para outras operações # é bolacha ou biscoito? > bolacha <- c(12, 8, 20, 18, 20) > biscoito <- c(2, 12, 5, 3, 1) # total de entrevistados por dia > total = bolacha + biscoito > total [1] 14 20 25 21 21 # dias das entrevistas > dias <- c(“Seg”, “Ter”, “Qua”, “Qui”, “Sex”) > names(total) <- dias > total [1] Seg Ter Qua Qui Sex 14 20 25 21 21
elementos do vetor, chamamos o método sum(). Também é possível comparar vetores. # total de entrevistados > total = bolacha + biscoito > total [1] 14 20 25 21 21 # soma de todos os valores > sum(total) [1] 101 # comparando vetores # bolacha é preferência nacional? > bolacha > biscoito [1] TRUE FALSE TRUE TRUE TRUE
matrizes, data frames, listas...), podemos usar colchetes contendo o elementos que desejamos, podendo ser o índice ou o nome. Note que os índices começam por 1 e não por 0. > apostas = c(140, -50, 20, -120, 240) > dias <- c(“Seg”, “Ter”, “Qua”, “Qui”, “Sex”) > names(apostas) <- dias # retorna o primeiro elemento > apostas[1] [1] 140 # apostas no último dia > apostas[5] [1] 240 # selecionando por nome > apostas[“Ter”] [1] -50
um vetor com os índices que queremos no colchete. Ou podemos também utilizar a notação : (dois pontos) para buscar um range de elementos. # primeiro e terceiro elementos > apostas[c(1, 3)] [1] 140 20 # segundo e último elementos > apostas[c(2, 5)] [1] -50 240 # segundo a último elementos > apostas[2:5] [1] -50 20 -120 240 # selecionando por nome > apostas[c(“Seg”, “Qui”] [1] 140 -120
critério de comparação. O R sabe quando você passa um vetor de booleanos para seleção e retorna apenas os elementos com valores iguais a TRUE. > euro <- c(3.99, 4.12, 4.23) # compara cada elemento do vetor > maior_que_quatro <- euro > 4 > maior_que_quatro [1] FALSE TRUE TRUE # retorna os elementos maiores que 4 > euro[maior_que_quatro] [1] 4.12 4.23
elementos do mesmo tipo dispostos em um mesmo número de linhas e colunas (bidimensional). Podemos construir uma matriz utilizando a função matrix(). O primeiro argumento é uma coleção de elementos. byrow indica que a matriz é preenchida por linha. nrow diz quantas linhas a matriz deve ter. # criando uma matriz > matrix(1:9, byrow = TRUE, nrow = 3) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 # o primeiro argumento é um vetor # 1:9 é um atalho para # c(1,2,3,4,5,6,7,8,9) # byrow indica que a matriz é # preenchida pelas linhas # nrow indica que a matriz deve # ter 3 linhas
colchetes para selecionar elementos específicos em uma matriz. Porém matrizes possuem duas dimensões, então precisamos informar a linha e a coluna separadas por uma vírgula. # criando a matriz > got_matriz <- matrix(got_dados, byrow = TRUE, nrow = 2, dimnames = list(c(“T01”, “T02”, “T03”, “T04”, “T05”, “T06”), c(“Mortes”, “Nudes”)) # primeira linha, segundo elemento > got_matriz[1,2] [1] 130 # linhas 1 e 2; colunas 2, 3 e 4 > got_matriz[1:2,2:4] T02 T03 T04 Mortes 130 87 181 Nudes 12 9 10
os elementos de uma linha ou uma coluna, nenhum número é necessário antes ou depois da vírgula, respectivamente. # criando a matriz > got_matriz <- matrix(got_dados, byrow = TRUE, nrow = 2, dimnames = list(c(“T01”, “T02”, “T03”, “T04”, “T05”, “T06”), c(“Mortes”, “Nudes”)) # todos da primeira coluna > got_matriz[,1] Mortes Nudes 59 21 # todos da segunda linha > got_matriz[2,] T01 T02 T03 T04 T05 T06 21 12 9 10 12 7
estatísticos usado para armazenar variáveis categóricas. A diferença entre uma variável categórica e uma contínua é que uma variável categórica pode pertencer a um número limitado de categorias. Já uma variável contínua pode corresponder a um número infinito de valores. Para criar fatores em R, fazemos uso da função factor(). # um simples vetor > respostas <- c(“Sim”, “Não”, “Sim”, “Sim”, “Não”) # convertendo em fator > yesno_fator <- factor(respostas) > yesno_fator [1] Sim Não Sim Sim Não Levels: Não Sim
uma variável categórica nominal e uma variável categórica ordinal. Uma variável nominal é uma variável categórica sem uma ordem implícita. Em contrapartida, as variáveis ordinais possuem uma ordem natural. # nominal # significa que é impossível dizer que “um vale mais do que o outro” (embora discordem) > animais <- c(“Coelho”, “Alce”, “Macaco”, “Michel Temer”) # ordinal > temperatura <- c(“Alta”, “Baixa”, “Moderada”, “Baixa”, “Alta”) > fator_temperatura <- factor(temperatura, order = TRUE, levels = c("Baixa", "Moderada", "Alta")) > fator_temperatura [1] Alta Baixa Moderada Baixa Alta Levels: Baixa < Moderada < Alta
uma variável categórica nominal e uma variável categórica ordinal. Uma variável nominal é uma variável categórica sem uma ordem implícita. Em contrapartida, as variáveis ordinais possuem uma ordem natural. # nominal # significa que é impossível dizer que “um vale mais do que o outro” (alguns discordam) > animais <- c(“Coelho”, “Alce”, “Macaco”, “Michel Temer”) # ordinal > temperatura <- c(“Alta”, “Baixa”, “Moderada”, “Baixa”, “Alta”) > fator_temperatura <- factor(temperatura, order = TRUE, levels = c("Baixa", "Moderada", "Alta")) > fator_temperatura [1] Alta Baixa Moderada Baixa Alta Levels: Baixa < Moderada < Alta
de contêm diferentes tipos de dados ao invés de um, como vimos em Matrizes. Um Data Frame tem as variáveis de um conjunto de dados como colunas e observações como linhas. Criamos um data frame através da função data.frame() com vetores como argumentos. # vetores do mesmo tamanho organizados por # colunas > apps <- c(“Facebook”, “Instagram”, “Snapchat”, “Twitter”, “Whatsapp”, “Uber”, “Spotify”) > anos <- c(2004, 2010, 2011, 2006, 2009, 2009, 2008) > usuarios <- c(“39M”, “25M”, “27M”, “8M”, “41M”, “10M”, “10M”) # criando um data frame > data.frame(apps, anos, usuarios) apps anos usuarios 1 Facebook 2004 39M 2 Instagram 2010 25M 3 Snapchat 2011 27M 4 Twitter 2006 8M 5 Whatsapp 2009 41M 6 Uber 2009 10M 7 Spotify 2008 10M
do data frame, temos as funções head() e tail() que retornam as primeiras e as últimas linhas respectivamente. Já a função str() exibe a estrutura do seu conjunto de dados, como o número de observações e variáveis, lista de nomes, tipos de dados, etc. # criando o data frame > apps_bacanas <- data.frame(apps, anos, usuarios) > head(apps_bacanas) apps anos usuarios 1 Facebook 2004 39M 2 Instagram 2010 25M 3 Snapchat 2011 27M 4 Twitter 2006 8M 5 Whatsapp 2009 41M 6 Uber 2009 10M > str(apps_bacanas) 'data.frame': 7 obs. of 3 variables: $ apps : Factor w/ 7 levels "Facebook","Instagram",..: 1 2 3 5 7 6 4 $ anos : num 2004 2010 2011 2006 2009 ... $ usuarios: Factor w/ 6 levels "10M","25M","27M",..: 4 2 3 6 5 1 1
os valores das colunas pelo nome, o R nos dá um atalho para realizar esta tarefa com o coringa $. # coluna anos inteira > apps_bacanas[, “anos”] [1] 2004 2010 2011 2006 2009 2009 2008 # toda a coluna apps > apps_bacanas$apps [1] Facebook Instagram Snapchat Twitter Whatsapp Uber Spotify Levels: Facebook Instagram Snapchat Spotify Twitter Uber Whatsapp
conjunto facilmente utilizando uma coluna de dados lógicos. A função subset() é um atalho para isto. O primeiro argumento especifica o conjunto de dados que você quer um subconjunto. O segundo argumento é a condição para a seleção. # adicionando uma coluna lógica > apps_bacanas$vendido <- c(FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE) > mark_comprou <- apps_bacanas[,“vendido”] # onde vendido for verdadeiro > apps_bacanas[,mark_comprou] apps anos usuarios vendido 2 Instagram 2010 25M TRUE 5 Whatsapp 2009 41M TRUE > subset(apps_bacanas, subset = anos >= 2010) apps anos usuarios vendido 2 Instagram 2010 25M TRUE 3 Snapchat 2011 27M FALSE
com uma certa variável no conjunto de dados. Em R, isto é feito com a função order(). Ela é uma função que nos retorna uma posição ordenada para cada elemento quando é aplicada em uma variável. # ordenando um vetor > anos <- c(2009, 2008, 2013, 2017) > order(anos) [1] 2 1 3 4 > anos[order(anos)] [1] 2008 2009 2013 2017 # reordenando os dados do data frame > novos <- order(apps_bacanas$anos) > apps_bacanas[novos,] apps anos usuarios vendido 1 Facebook 2004 39M FALSE 4 Twitter 2006 8M FALSE 7 Spotify 2008 10M FALSE 5 Whatsapp 2009 41M TRUE 6 Uber 2009 10M FALSE 2 Instagram 2010 25M TRUE 3 Snapchat 2011 27M FALSE
grande variedade de objetos sob um nome de forma ordenada, que podem ser vetores, matrizes, data frames ou até mesmo uma outra lista. Ou seja, você pode armazenar qualquer coisa nelas. Criamos uma lista com a função list(). # listas são um super tipo de dados > list(bolacha, got_matriz, apps_bacanas) [[1]] [1] 12 8 20 18 20 [[2]] T01 T02 T03 T04 T05 T06 Mortes 59 130 87 181 246 540 Nudes 21 12 9 10 12 7 [[3]] apps anos usuarios vendido 1 Facebook 2004 39M FALSE 2 Instagram 2010 25M TRUE 3 Snapchat 2011 27M FALSE 4 Twitter 2006 8M FALSE 5 Whatsapp 2009 41M TRUE 6 Uber 2009 10M FALSE 7 Spotify 2008 10M FALSE
nós usamos a função c(), a mesma que usamos para criar um vetor. > palavras_magicas <- c(“Obrigada”, “Por Favor”, “Desculpa”, “Abracadabra”, “Leviosá”) > nova_lista <- c(super_tipo, palavras_magicas)