Em R, os tipos de dados e as estruturas de dados são conceitos fundamentais, mas distintos, que se complementam na manipulação de informações.
Os tipos de dados referem-se às classes que R pode manipular. Cada tipo de dado determina o tipo de operação que pode ser realizada e a forma como os dados são armazenados. Por exemplo, o tipo numeric abrange números de ponto flutuante, enquanto integer inclui apenas valores inteiros. O tipo character se refere a dados textuais ou strings, logical trata de valores booleanos (TRUE ou FALSE), e complex abrange números complexos. Existe também o tipo raw, que representa bytes brutos. Esses tipos de dados são fundamentais para definir as características básicas dos valores individuais em R.
As estruturas de dados, por outro lado, referem-se às maneiras como esses valores individuais podem ser organizados e armazenados em coleções. Enquanto os tipos de dados tratam de valores individuais, as estruturas de dados lidam com conjuntos de valores.
Vetores (vectors) são estruturas unidimensionais homogêneas, onde todos os elementos são do mesmo tipo. Fatores (factors) são usados para representar dados categóricos e são uma forma especializada de vetor. Listas (lists) são estruturas heterogêneas, onde os elementos podem ser de diferentes tipos, oferecendo uma flexibilidade significativa na manipulação de dados complexos.
Matrizes (matrices) são conjuntos bidimensionais e homogêneas, adequadas para dados tabulares. enquanto que as arrays são uma extensão das matrizes para múltiplas dimensões, mantendo a homogeneidade dos dados. Os data frames são estruturas bidimensionais heterogêneas, onde cada coluna pode conter diferentes tipos de dados, sendo amplamente usados para manipulação de dados tabulares em análises estatísticas. Veremos adiantes que as Tibbles são data frames modernos.
Vamos criar no código abaixo diversas dessas estruturas.
Criando vetores
Code
# Vetor - Um conjunto de valores do mesmo tipo (númerico, caractere, lógico).# Exemplo: Idades e nomes de um grupo de pacientesidades <-c(23, 45, 34, 52, 29)nomes <-c("Joana", "Maria", "Antônio", "Henrique", "Leo") # Verificanto o tipo de objeto, sua classe:class(idades)
[1] "numeric"
Code
class(nomes)
[1] "character"
Code
# Vetor de dados categóricos - Usado para representar dados categóricos. # Exemplo: Tipos sanguíneos de pacientestipos_sanguineos <-factor(c("A", "B", "O", "AB", "A", "A", "B", "O", "AB", "A", "A", "B", "AB", "AB", "AB"))# Verificanto o tipo de objeto, sua classe:class(tipos_sanguineos)
[1] "factor"
Tabulando dados de uma variável categórica
Code
# Tabela - Para contagem de frequências.# Exemplo: Contagem de diferentes tipos sanguíneos em uma amostra de pacientestabela_1 <-table(tipos_sanguineos)print(tabela_1)
tipos_sanguineos
A AB B O
5 5 3 2
Criando Matrizes
Code
# Matriz - Uma tabela bidimensional onde todos os elementos são do mesmo tipo.# Exemplo: Resultados de exames de 3 pacientes para 4 diferentes examesexames <-matrix(c(90, 85, 88, 95, 70, 75, 78, 82, 65, 72, 77, 80), nrow=3, byrow=TRUE)# nomeando as coluilnas e as linhas da matrizcolnames(exames) <-c("Exame1", "Exame2", "Exame3", "Exame4")rownames(exames) <-c("Paciente1", "Paciente2", "Paciente3")# Verificanto o tipo de objeto, sua classe:class(exames)
# Data Frame - Semelhante a uma matriz, mas pode conter diferentes tipos de dados em diferentes colunas.# Exemplo: Dados demográficos e resultados de exames de pacientespacientes <-data.frame(ID =c(1, 2, 3),Nome =c("Ana", "Bruno", "Carla"),Idade =c(25, 37, 29),Sexo =factor(c("Feminino", "Masculino", "Feminino")),Exame1 =c(90, 70, 65),Exame2 =c(85, 75, 72))# Verificanto o tipo de objeto, sua classe:class(pacientes)
[1] "data.frame"
Code
# Mostrando o data frame criadoprint(pacientes)
ID Nome Idade Sexo Exame1 Exame2
1 1 Ana 25 Feminino 90 85
2 2 Bruno 37 Masculino 70 75
3 3 Carla 29 Feminino 65 72
Code
# Data Frame com missing data (NA) - Representa a ausência de valores.# Exemplo: Dados de exames onde algumas informações estão ausentesexames_com_na <-data.frame(Paciente =c("Ana", "Bruno", "Carla"),Exame1 =c(90, NA, 65),Exame2 =c(NA, 75, 72),Exame3 =c(88, 80, NA))print(exames_com_na)
Paciente Exame1 Exame2 Exame3
1 Ana 90 NA 88
2 Bruno NA 75 80
3 Carla 65 72 NA
Criando Listas
Code
# Lista - Pode conter diferentes tipos de dados, como vetores, fatores, matrizes, e data frames.# Exemplo: Informações completas sobre um único pacientepaciente_info <-list(ID =1,Nome ="Ana",Idade =25,Tipo_Sanguineo =factor("A"),Resultados_Exames =c(90, 85, 95, 88), Histórico =data.frame(Ano =c(2020, 2021, 2022),Consulta =c("Check-up", "Exame rotineiro", "Tratamento de infecção") ))print(paciente_info)
$ID
[1] 1
$Nome
[1] "Ana"
$Idade
[1] 25
$Tipo_Sanguineo
[1] A
Levels: A
$Resultados_Exames
[1] 90 85 95 88
$Histórico
Ano Consulta
1 2020 Check-up
2 2021 Exame rotineiro
3 2022 Tratamento de infecção