Data reshaping em R é organizar linhas e colunas do seu jeito para usar os dados conforme a sua necessidade. Na maioria dos casos, os dados são trabalhados no formato de data frame em R para processamento, usando funções como "rbind()", "cbind()" etc.
Nesse processo, você reorganiza os dados em linhas e colunas. Reshaping é deixar os dados no formato exato de que você precisa para continuar o processamento.
Criando seus dados
Vamos criar um gerador de números aleatórios e montar colunas para concatená-las em um data frame. Também vamos inserir um id para usar depois. "set.seed(123)" é usado para produzir números aleatórios reprodutíveis, ou seja, qualquer pessoa que rodar o código terá a mesma amostra. Serão criadas três variáveis, colm1, colm2, colm3. Com a ajuda de "sample()", são gerados valores de 1 a 15, com possibilidade de repetição. O data frame armazena esses dados em tabela, e o id é adicionado como um número único.
set.seed(123)
N <-15
colm1 <- sample(1:15, N, replace=TRUE)
colm2 <- sample(1:15, N, replace=TRUE)
colm3 <- sample(1:15, N, replace=TRUE)
df_Temp <- data.frame(colm1, colm2,colm3)
df_Temp$id<-seq(nrow(df_Temp))
df_TempTecnologia
O código acima gera a saída a seguir, com três colunas chamadas "colm1", "colm2", "colm3" e um id de 1 a 15. Os valores de cada coluna são preenchidos com números de 1 a 15; alguns se repetem e outros podem nem aparecer.
colm1 colm2 colm3 id
15111411553233431411144391510121162977695811131295315104810111410131267713910914109915Tecnologia
função cbind
Uso: combina vetores, matrizes e data frames por colunas. Parâmetros: cbind(v1, v2): v1 e v2 podem ser vetores, matrizes ou data frames.
Veja o exemplo de binding na prática.
O id pode ser selecionado por "df_Temp[,4]", enquanto "df_Temp[,2]" seleciona "colm2" de df_Temp, como abaixo. Esses dois servem de parâmetros para "cbind()" e o resultado é armazenado na variável "cbindexample". Em seguida, os nomes das colunas podem ser alterados com "colnames()", que recebe o objeto e um vetor com os novos nomes, por exemplo: "newid", "new_colm2".
O código acima gera a saída abaixo, mostrando que você pode unir as duas colunas id e colm2 usando a função "cbind" para criar um novo data frame. Os nomes das colunas foram alterados para "new_colm2" e "id" virou "newid".
newid new_colm2
111253341159612798991310311812101371410159Tecnologia
função rbind:
Uso: rbind combina vetores, matrizes ou data frames por linhas. Parâmetros: rbind(v1, v2): v1 e v2 podem ser vetores, matrizes ou data frames.
Vamos criar um novo vetor chamado "new_vector" e combiná-lo com "cbindexample" (de 2 colunas) usando "rbind", concatenando ambos e armazenando em "rbindexample".
O código acima gera a saída abaixo, na qual uma nova linha é adicionada com os valores 16 e 15 em "newid" e "new_colm2", respectivamente.
newid new_colm2
1112533411596127989913103118121013714101591615Tecnologia
função melt:
Uso: a função melt converte um objeto para o estado "derretido" (long format), ou seja, pega várias colunas de dados e transforma em uma única coluna. Parâmetros: melt(data, …, na.rm=FALSE/TRUE, value.name=”value”), data: o input que você vai "derreter". ...: argumentos passados para/por outras funções. na.rm: usado para tratar valores ausentes, convertendo ausências explícitas em implícitas. value.name: nome da coluna onde os valores serão armazenados. Vamos ver o código para "derreter" os dados usando a variável id, gerando uma coluna com o nome da coluna original e outra com o valor:
Importe o pacote "reshape2" com "library()" e use melt para combinar as colunas colm1, colm2, colm3 de "df_Temp" em um único lugar chamado "variable", mantendo "id" como identificador.
A saída mostra que, ao derreter os dados de colm1, colm2 e colm3 com base na variável id, tudo é combinado em uma coluna chamada "variable", enquanto os valores ficam em "value".
função dcast:
Uso: quando você tem um conjunto de dados derretido (long), pode reconvertê-lo ao formato original (wide) com esta função. Parâmetros: dcast(data, id_variable~value), data: dados derretidos que precisam voltar ao formato original. id_variable: uma ou mais colunas usadas para derreter os dados das outras colunas em uma só. ~: após esse sinal, informamos os valores ou a nova coluna derretida do dataset.
No código abaixo, "reshape2" é importado com "library()" e "dcast()" recebe como primeiro parâmetro os dados resultantes de "melt()" e usa o símbolo "~" com id para formar as novas colunas a partir de "variable".
Neste tutorial, você aprenderá a usar o R PCA (Principal Component Analysis) para extrair dados com muitas variáveis e criar visualizações para exibir esses dados.
Data reshaping em R é organizar linhas e colunas do seu jeito para usar os dados conforme a sua necessidade. Na maioria dos casos, os dados são trabalhados no formato de data frame em R para processamento, usando funções como "rbind()", "cbind()" etc.
Nesse processo, você reorganiza os dados em linhas e colunas. Reshaping é deixar os dados no formato exato de que você precisa para continuar o processamento.
Criando seus dados
Vamos criar um gerador de números aleatórios e montar colunas para concatená-las em um data frame. Também vamos inserir um id para usar depois. "set.seed(123)" é usado para produzir números aleatórios reprodutíveis, ou seja, qualquer pessoa que rodar o código terá a mesma amostra. Serão criadas três variáveis, colm1, colm2, colm3. Com a ajuda de "sample()", são gerados valores de 1 a 15, com possibilidade de repetição. O data frame armazena esses dados em tabela, e o id é adicionado como um número único.
O código acima gera a saída a seguir, com três colunas chamadas "colm1", "colm2", "colm3" e um id de 1 a 15. Os valores de cada coluna são preenchidos com números de 1 a 15; alguns se repetem e outros podem nem aparecer.
função cbind
Uso: combina vetores, matrizes e data frames por colunas.
Parâmetros: cbind(v1, v2): v1 e v2 podem ser vetores, matrizes ou data frames.
Veja o exemplo de binding na prática.
O id pode ser selecionado por "df_Temp[,4]", enquanto "df_Temp[,2]" seleciona "colm2" de df_Temp, como abaixo. Esses dois servem de parâmetros para "cbind()" e o resultado é armazenado na variável "cbindexample". Em seguida, os nomes das colunas podem ser alterados com "colnames()", que recebe o objeto e um vetor com os novos nomes, por exemplo: "newid", "new_colm2".
O código acima gera a saída abaixo, mostrando que você pode unir as duas colunas id e colm2 usando a função "cbind" para criar um novo data frame. Os nomes das colunas foram alterados para "new_colm2" e "id" virou "newid".
função rbind:
Uso: rbind combina vetores, matrizes ou data frames por linhas.
Parâmetros: rbind(v1, v2): v1 e v2 podem ser vetores, matrizes ou data frames.
Vamos criar um novo vetor chamado "new_vector" e combiná-lo com "cbindexample" (de 2 colunas) usando "rbind", concatenando ambos e armazenando em "rbindexample".
O código acima gera a saída abaixo, na qual uma nova linha é adicionada com os valores 16 e 15 em "newid" e "new_colm2", respectivamente.
função melt:
Uso: a função melt converte um objeto para o estado "derretido" (long format), ou seja, pega várias colunas de dados e transforma em uma única coluna.
Parâmetros: melt(data, …, na.rm=FALSE/TRUE, value.name=”value”),
data: o input que você vai "derreter".
...: argumentos passados para/por outras funções.
na.rm: usado para tratar valores ausentes, convertendo ausências explícitas em implícitas.
value.name: nome da coluna onde os valores serão armazenados.
Vamos ver o código para "derreter" os dados usando a variável id, gerando uma coluna com o nome da coluna original e outra com o valor:
Importe o pacote "reshape2" com "library()" e use melt para combinar as colunas colm1, colm2, colm3 de "df_Temp" em um único lugar chamado "variable", mantendo "id" como identificador.
A saída mostra que, ao derreter os dados de colm1, colm2 e colm3 com base na variável id, tudo é combinado em uma coluna chamada "variable", enquanto os valores ficam em "value".
função dcast:
Uso: quando você tem um conjunto de dados derretido (long), pode reconvertê-lo ao formato original (wide) com esta função.
Parâmetros: dcast(data, id_variable~value),
data: dados derretidos que precisam voltar ao formato original.
id_variable: uma ou mais colunas usadas para derreter os dados das outras colunas em uma só.
~: após esse sinal, informamos os valores ou a nova coluna derretida do dataset.
No código abaixo, "reshape2" é importado com "library()" e "dcast()" recebe como primeiro parâmetro os dados resultantes de "melt()" e usa o símbolo "~" com id para formar as novas colunas a partir de "variable".
Perceba que, após "melt()", os dados voltam ao conjunto original. Há três colunas com seus respectivos valores e o id em uma coluna separada.
função de transposição:
Uso: converte linhas em colunas e colunas em linhas.
Parâmetros: t(data). "data" é o data frame que você quer transpor.
Vamos inverter linhas e colunas usando a função de transposição. Basta usar "t(df_Temp)", como abaixo.
O código acima gera a seguinte saída:
Veja que o data frame, que tinha 15 linhas e quatro colunas, passa a ter 15 colunas e 3 linhas após a transposição.
Parabéns
Parabéns, você chegou ao fim deste tutorial!
Neste tutorial, você viu diferentes funções do R como "rbind()", "cbind()", além de "Melt()", "Dcast()" e, por fim, a função de transposição.
Se quiser aprender mais sobre R, faça o curso Introduction to R da DataCamp e confira nosso guia R Packages: A Beginner's Tutorial.
Referências:
Funções melt