AnswerBun.com

Como distribuir o conteúdo de uma coluna por outras colunas no R?

Stack Overflow em Português Asked by itamar on November 3, 2020

Estou tentando distribuir o conteúdo de uma coluna em outras 3 colunas.

Tenho o seguinte Data Frame:

library(tidyr)

df<-data.frame(Coluna=
c('2237-5953',
'(RE) PENSANDO DIREITO',
'B4',
'2469-4312',
'[IN] TRANSITION',
'B2',
'1981-030X',
'19&20 (RIO DE JANEIRO)',
'B1',
'2053-1583',
'2D MATERIALS',
"A2")
  )

df
                   Coluna
1               2237-5953
2   (RE) PENSANDO DIREITO
3                      B4
4               2469-4312
5         [IN] TRANSITION
6                      B2
7               1981-030X
8  19&20 (RIO DE JANEIRO)
9                      B1
10              2053-1583
11           2D MATERIALS
12                     A2

Há um padrão aqui que é o número do ISSN do periódico, o título do mesmo e a classificação dele no Qualis. Portanto, a cada três linhas, as informações se repetem.

Pensei em criar um novo data frame df2 com as colunas correspondentes:

df2<-data.frame(df, numero="", periodico="", qualis="")

> df2
                   Coluna numero periodico qualis
1               2237-5953                        
2   (RE) PENSANDO DIREITO                        
3                      B4                        
4               2469-4312                        
5         [IN] TRANSITION                        
6                      B2                        
7               1981-030X                        
8  19&20 (RIO DE JANEIRO)                        
9                      B1                        
10              2053-1583                        
11           2D MATERIALS                        
12                     A2                        
> 

Feito isso, pensei em usar a função spread( ) para espalhar o conteúdo da primeira coluna (chamada "Coluna") entre estas 3 colunas recém-criadas:

df2 %>% 
  spread(Coluna, c(numero:qualis))

Mas, sem sucesso.

Imaginei que tinha transmitido o seguinte comando "espalhe o conteúdo da coluna "Coluna" nas colunas que vão de "numero" a "qualis"."

No entanto, evidentemente, não foi isso que o R entendeu.
Como consigo realizar essa tarefa?

One Answer

Como as informações estão agrupadas em intervalos regulares, pode usar indexação condicional:

df2 <- data.frame(
  numero = df$Coluna[c(TRUE, FALSE, FALSE)],
  periodico = df$Coluna[c(FALSE, TRUE, FALSE)],
  qualis = df$Coluna[c(FALSE, FALSE, TRUE)]
)

> df2
     numero              periodico qualis
1 2237-5953  (RE) PENSANDO DIREITO     B4
2 2469-4312        [IN] TRANSITION     B2
3 1981-030X 19&20 (RIO DE JANEIRO)     B1
4 2053-1583           2D MATERIALS     A2

Se for usar spread ou outras funções similares, crie colunas de identificação primeiro, aproveitando-se da regularidade:

df$id <- rep(1:(nrow(df)/3), each = 3)
df$col <- c("numero", "periodico", "qualis")

> tidyr::pivot_wider(df, names_from = col, values_from = Coluna)
# A tibble: 4 x 4
    id numero    periodico              qualis
  <int> <fct>     <fct>                  <fct>
1     1 2237-5953 (RE) PENSANDO DIREITO  B4
2     2 2469-4312 [IN] TRANSITION        B2
3     3 1981-030X 19&20 (RIO DE JANEIRO) B1
4     4 2053-1583 2D MATERIALS           A2

> reshape2::dcast(df, id ~ col, value.var = "Coluna")
  id    numero              periodico qualis
1  1 2237-5953  (RE) PENSANDO DIREITO     B4
2  2 2469-4312        [IN] TRANSITION     B2
3  3 1981-030X 19&20 (RIO DE JANEIRO)     B1
4  4 2053-1583           2D MATERIALS     A2

Correct answer by Carlos Eduardo Lagosta on November 3, 2020

Add your own answers!

Related Questions

Salvar um array vindo do formulario no banco de dados

1  Asked on December 8, 2020 by pablo-pereira

   

Mudar cor e estilo da fonte do Listview nao funciona

1  Asked on December 8, 2020 by wilfer

 

Devo alocar o membro da estrutura data também?

3  Asked on December 8, 2020 by jaime38130

     

Programa não compila com erros diversos

1  Asked on December 8, 2020 by drd0spy

   

FullPage.js + class=”section”

1  Asked on December 8, 2020 by fabio-souza

       

Erro na compilação: expected ‘;’ before ‘case’

1  Asked on December 3, 2020 by entayrer_programer

   

Menu no módulo Tkinter Python

1  Asked on December 2, 2020 by antnio-gally

       

Deixar o vídeo ocupando 100% da tela com altura fixa

1  Asked on December 2, 2020 by felipe-henrique

   

Calculadora com inputs usando DOM

1  Asked on December 2, 2020 by ash

 

Como retirar caractere especial da classe obtida de um texto?

1  Asked on December 1, 2020 by kim-hanneman

   

Delphi – Recuperar código no DBGrid apos cadastro

0  Asked on November 30, 2020 by ederson-silva

   

Subtrair extrair meses entre duas datas em javascript

1  Asked on November 30, 2020 by evandro-csar

     

Tamanho de um ArrayList

1  Asked on November 30, 2020 by jbarbosa

   

C# Criptografia de senhas

0  Asked on November 30, 2020 by eric-jhon

     

Consegui pesquisar mais 1 query no banco de dados com PHP

1  Asked on November 28, 2020 by roberto-pereira

       

variável do Javascript no template do Django

1  Asked on November 28, 2020 by raphael-melo-de-lima

         

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP