O seu Blog de Psicometria

Tenha acesso à nossa enciclopédia virtual de conhecimento em Psicometria e Análise de Dados

Junte-se a mais de 22.300 membros e receba conteúdos exclusivos e com prioridade

Como reestruturar o formato do banco de dados no R?

Marcos Lima

jul 8, 2024

Neste post, apresentaremos um tutorial de como reestruturar o formato do banco de dados no R. A linguagem R é uma ferramenta versátil para a manipulação de dados antes do ajuste dos modelos estatísticos propriamente ditos.

Para iniciar, vamos a uma descrição do problema. Existem dois formatos principais para estruturar seu banco de dados: o formato amplo (wide) e o formato longo (long). Nesse sentido, diferentes técnicas estatísticas pressupõem que o banco de dados está montado de maneiras distintas.

Primeiramente, explicaremos esses dois formatos de banco de dados, com exemplos. Em seguida, em duas seções independentes, explicaremos como reestruturar seu banco de dados no formato amplo para longo, e no formato longo para amplo. Essas seções são escritas de modo que você possa ler uma independentemente da outra. Finalmente, concluíremos o post com algumas sugestões de materiais sobre o R para você que tem interesse em psicometria e em análise quantitativa de dados.

O que são os formatos amplo e longo?

O que é banco de dados no formato amplo?

Antes de mais nada, vamos falar do formato amplo (wide). Com frequência, é nesse formato que tabulamos dados em softwares como Excel e SPSS. No formato amplo, cada linha representa um participante ou observação, e cada coluna representa uma variável distinta. Além disso, variáveis mensuradas múltiplas vezes são apresentadas em várias colunas, uma por mensuração.

A Figura 1 apresenta um exemplo de banco de dados tabulados em formato amplo. Para fins didáticos, o banco de dados possui apenas quatro participantes. Na Figura 1, a coluna ID representa o código de identificação dos participantes e a coluna Sexo representa uma variável comum a todos os tempos do estudo. Por outro lado, escores de depressão foram mensurados em três ondas (pré-teste, pós-teste e follow-up), sendo, portanto, representados na tabela em colunas distintas.

representação do formato amplo (wide).
Figura 1. Exemplo de banco de dados em formato amplo.

O que é banco de dados no formato longo?

Em contrapartida, no formato longo, múltiplas linhas podem representar um mesmo participante. Em outras palavras, o número de vezes que cada participante se repete no banco de dados corresponde ao número de medidas repetidas existentes no estudo. No exemplo do estudo longitudinal que mencionamos anteriormente, três linhas distintas representam cada participante, uma para cada tempo de avaliação dos escores de depressão.

A Figura 2 apresenta um exemplo de banco de dados tabulados em formato longo. Recapitulando, o número de linhas desse banco de dados é o produto do número de participantes pelo número de medidas repetidas (4 participantes × 3 medidas repetidas = 12 linhas). No banco de dados da Figura 2, uma única coluna aglutina as três medidas de depressão ao longo do tempo. Para sabermos a qual tempo cada linha se refere, uma nova coluna, denominada tempo, codifica as observações em pré-teste, pós-teste e follow-up.

representação formato longo (long).
Figura 2. Exemplo de banco de dados em formato longo.

Por que reestruturar banco de dados no R?

Em geral, testes t, correlações e regressões lineares e logísticas exigem que o banco de dados esteja no formato amplo, enquanto ANOVAs de medidas repetidas, modelos lineares mistos e modelos hierárquicos generalizados exigem que o banco de dados esteja no formato longo.

Sendo assim, é importante que pesquisadores conheçam e saibam utilizar funções que transformem o banco de dados de um formato para o outro, conforme suas necessidades. Em seguida, mostraremos como podemos transformar o banco de dados de um formato para o outro usando a linguagem R.

Como reestruturar banco de dados de amplo para longo no R?

Como preparar o material

Neste tutorial, assumiremos que o banco de dados está armazenado como um objeto do tipo data.frame, no R. Esse tipo de estrutura é similar às planilhas do Excel com as quais você já pode ter alguma familiaridade. Na sequência do post, os termos banco de dados e data.frame serão usados de maneira intercambiável.

Antes de mais nada, instalaremos e carregaremos o pacote que utilizaremos no tutorial.

# instalando e carregando o stats
install.packages("stats")
library(stats)

Em seguida, criaremos um banco de dados similar à representação da Figura 1. O código a seguir atinge esse objetivo.

# dados em formato amplo (similar à Figura 1)
dados_amplo <- data.frame(ID = rep(1:4),
                    sexo = c("F", "F", "M", "M"),
                    depressao_pre = c(5, 20, 35, 50),
                    depressao_pos = c(10, 25, 40, 55),
                    depressao_follow = c(15, 30, 45, 60)
                    )

head(dados_amplo)
data.frame no formato amplo (wide).

Note que o data.frame acima possui quatro linhas, cada uma delas representando um participante, similar à representação de banco de dados em formato amplo da Figura 1.

Como reestruturar o banco de dados no R

A seguir, nossa tarefa será reestruturar o banco de dados com o R, no caminho amplo para longo (wide to long). Para isso, usaremos a função reshape, do pacote stats, conforme indicado no código a seguir.

# reestruturando dados no caminho amplo para longo
dados_amplo_para_longo <- stats::reshape(data = dados_amplo,
                             idvar = c("ID", "sexo"),
                             varying = list(c("depressao_pre",
                                              "depressao_pos",
                                              "depressao_follow")),
                             v.names = "depressao",
                             timevar = "tempo",
                             times = c("Pré-teste",
                                       "Pós-teste",
                                       "Follow-up"),
                             direction = "long")

No código anterior, invocamos a função reshape e atribuímos seu valor de retorno ao objeto dados_amplo_para_longo. A função reshape recebe os seguintes argumentos:

  • data: o dataframe que queremos reestruturar;
  • idvar: especifica quais variáveis serão mantidas como identificadores no formato longo (i.e., as variáveis que não mudarão ao longo do tempo);
  • varying: indica as colunas do banco de dados original que deverão ser transformadas em uma única coluna;
  • v.names: define o nome da nova coluna que aglutinará os valores passados como argumentos para varying;
  • timevar: define o nome da coluna que indicará o tempo da mensuração em cada linha;
  • times: define os valores que a coluna tempo devem assumir;
  • direction: indica para qual direção estamos reestruturando nossos dados.

Em nosso exemplo, atribuímos o resultado da operação a dados_amplo_para_longo. Por fim, executamos o código a seguir, que remove os nomes das linhas.

# limpa nomes das linhas do novo banco de dados
row.names(dados_amplo_para_longo) <- NULL
# e mostra as 12 linhas do novo banco de dados
head(dados_amplo_para_longo, 12)
resultado depois de reestruturar banco de dados no R, no formato amplo para longo.

Em síntese, obtemos o banco de dados em formato longo, similar àquele apresentado na Figura 2. Além disso, nós também poderíamos alterar a ordem de apresentação das linhas da representação acima, de modo que ela fique idêntica à Figura 2. Contudo, essa manipulação vai além do escopo desse tutorial.

Como reestruturar banco de dados de longo para amplo no R?

Como preparar o ambiente

Neste tutorial, assumiremos que o banco de dados está armazenado como um objeto do tipo data.frame, no R. Esse tipo de estrutura é similar às planilhas do Excel com as quais você já pode ter alguma familiaridade. Se você quer aprender mais sobre data.frames, então veja nosso vídeo sobre o tema no YouTube. Daqui em diante, os termos banco de dados e data.frame serão usados de maneira intercambiável.

Antes de mais nada, instalaremos e carregaremos o pacote que utilizaremos no tutorial.

# instalando e carregando o stats
install.packages("stats")
library(stats)

Em seguida, criaremos um banco de dados similar à representação da Figura 2. O código a seguir atinge esse objetivo.

# dados em formato longo (similar à Figura 2)
dados_longo <- data.frame(ID = rep(1:4, each = 3),
                    sexo = rep(c("F", "M"), each = 6),
                    onda = rep(c("Pré-teste",
                                 "Pós-teste",
                                 "Follow-up"), by = 4),
                    depressao = seq(from = 5, to = 60, by = 5))

head(dados_longo, 12)
data.frame no formato longo (long).

Como reestruturar o banco de dados no R

A seguir, nossa tarefa será reestruturar o banco de dados com o R, no caminho longo para amplo (long to wide). Para isso, usaremos a função reshape, do pacote stats, conforme indicado no código a seguir.

# reestruturando dados no caminho longo para amplo
dados_longo_para_amplo <- stats::reshape(data = dados_longo,                    
                                         idvar = c("ID", "sexo"),  
                                         timevar = "onda",   
                                         direction = "wide")  

No código anterior, invocamos a função reshape e atribuímos seu valor de retorno ao objeto dados_longo_para_amplo. A função reshape recebe os seguintes argumentos:

  • data: o dataframe que queremos reestruturar;
  • idvar: especifica quais variáveis serão mantidas como identificadores no formato longo (i.e., as variáveis que definirão o número de linhas no novo banco de dados);
  • timevar: variável que diferencia os registros de um mesmo caso;
  • direction: indica para qual direção estamos reestruturando nossos dados.

Em nosso exemplo, atribuímos o resultado da operação a dados_longo_para_amplo. Por fim, executamos o código a seguir, que remove os nomes das linhas.

# renomeia nomes das colunas
colnames(dados_longo_para_amplo) <- c("ID", "sexo", unique(dados_longo$onda))
# e mostra as 4 linhas do novo banco de dados
head(dados_longo_para_amplo, 4)
resultado depois de reestruturar banco de dados no R, no formato longo para amplo.

Em síntese, obtemos o banco de dados em formato amplo, similar àquele apresentado na Figura 1.

Conclusão

Neste tutorial, você aprendeu o que são bancos de dados nos formatos amplo (wide) e longo (long). Além disso, em dois tutoriais simples, você aprendeu como reestruturar o banco de dados no R, indo de um formato para o outro. Para atingir esses objetivos, utilizamos a linguagem R, uma ferramenta poderosa para pesquisadores em análise quantitativa de dados.

Se você quer saber mais sobre a Psicometria Online Academy, acesse nosso site. Conheça toda nossa estrutura aqui e nunca mais passe trabalho sozinho(a).

Referência

Field, A., Miles, J., & Field, Z. (2012). Discovering statistics using R. Sage.

Como citar este post

Lima, M. (2024, 8 de julho). Como reestruturar o formato do banco de dados no R. Blog Psicometria Online. https://www.blog.psicometriaonline.com.br/como-reestruturar-banco-de-dados-no-r

Bruno Figueiredo Damásio

Sou Psicólogo, mestre e doutor em Psicologia. Venho me dedicando à Psicometria desde 2007.

Fui professor e chefe do Departamento de Psicometria da UFRJ durante os anos de 2013 a 2020. Fui editor-chefe da revista Trends in Psychology, da Sociedade Brasileira de Psicologia (SBP) eEditor-Associado da Spanish Journal of Psychology, na sub-seção Psicometri e Métodos Quantitativos.

Tenho mais de 50 artigos publicados e mais de 3000 citações, nas melhores revistas nacionais e internacionais.

Compartilhe sua opinião sobre este post

Posts sugeridos

Como criar gráficos no R com o ggplot2?

Como juntar bancos de dados no R com o dplyr?

Modelagem por equações estruturais no R: conceitos e aplicações

Conteúdo

Mais lidos

Como criar gráficos no R com o ggplot2?

Quais pacotes usar na análise fatorial exploratória no R?

Como juntar bancos de dados no R com o dplyr?

Por que aprender a programar em R?

Postados recentemente

Como criar gráficos no R com o ggplot2?

Quais pacotes usar na análise fatorial exploratória no R?

Como juntar bancos de dados no R com o dplyr?

Por que aprender a programar em R?

Deseja se tornar completamente autônomo e independente na análise dos seus dados?

Junte-se a mais de 22.300 membros e receba conteúdos exclusivos e com prioridade

Bruno Figueiredo Damásio

Sou Psicólogo, mestre e doutor em Psicologia. Venho me dedicando à Psicometria desde 2007.

 

Fui professor e chefe do Departamento de Psicometria da UFRJ durante os anos de 2013 a 2020. Fui editor-chefe da revista Trends in Psychology, da Sociedade Brasileira de Psicologia (SBP) eEditor-Associado da Spanish Journal of Psychology, na sub-seção Psicometri e Métodos Quantitativos.

 

Tenho mais de 50 artigos publicados e mais de 3000 citações, nas melhores revistas nacionais e internacionais. Atualmente, me dedico a formação de novos pesquisadores, através da Psicometria Online Academy. Minha missão é ampliar a formação em Psicometria no Brasil e lhe auxiliar a conquistar os seus objetivos profissionais.

Compartilhe sua opinião sobre este post

Posts sugeridos

Como criar gráficos no R com o ggplot2?

Como juntar bancos de dados no R com o dplyr?

Modelagem por equações estruturais no R: conceitos e aplicações

Categorias

Cadastre-se para ser notificado com o link das aulas ao vivo:

Módulo 4: Redes neurais artificiais

• Introdução a Deep Learning

• Avaliando sistemas de Deep Learning

• Redes Neurais feitas (sem programação) no SPSS

• Aula bônus: O futuro da IA na Sociedade

• Aula bônus: Dois Estudos de Caso 

Módulo 3: Interpretar e reportar resultados

• Gerar, interpretar e reportar resultados em Machine Learning

Módulo 2: Criando o seu sistema

• Selecionando algoritmos e métodos 
• Práticas de Machine Learning (Sem programação): Decision Tree (JASP), Linear Discriminant Classification (JASP) e Plataforma ORANGE
• Aula Bônus: Avaliação Psicológica e Machine Learning
• Aula Bônus: Livros e Cursos recomendados  
• Aula Bônus: Entrevista com Cientista de Dados focado na área da Saúde

Módulo 1: O que é Machine Learning

• O que é Machine Learning?
• Como a máquina aprende?
• Machine Learning para Psicometria e Pesquisa Quantitativa (pesquisas comentadas)
• Tipos de Machine Learning (Supervisionado e Não-supervisionado)
• Práticas de Machine Learning (Sem programação): JASP e SPSS
Aula Bônus: Filosofia da Inteligência Artificial
• Aula Bônus: Entrevista com Cientista de Dados graduado em Psicologia
• Aula bônus: Estudo de Caso sobre Redução Dimensional 

Preencha abaixo para
participar gratuitamente

Fique tranquilo, não utilizaremos suas informações de contato para enviar qualquer tipo de SPAM. Os dados coletados são tratados nos termos da Lei Geral de Proteção de Dados e você pode se descadastrar da nossa lista de contatos a qualquer momento.