[R-br] Digest R-br, volume 95, assunto 23

Paulo Eduardo de Mesquita paulomesquita7 em gmail.com
Sex Nov 30 16:33:11 -02 2018


Obrigado ao Daniel, ao Luciano e ao Jônatan,

Cada uma das soluções apresentadas, contém, a sua forma, lições muito
interessantes.

A solução do Daniel, embora um pouco mais exaustiva, mostra como desmontar
uma estrutura de dados em listas e depois fazer a engenharia reversa numa
nova estrutura bidimensional na orientação desejada.

Já as soluções do Luciano e também a do Jônatan; mais elegantes e
econômicas que essas, só com mágica; e mágica não me interessa.

Muito obrigado a todos,

PM

Em sex, 30 de nov de 2018 às 12:00, <r-br-request em listas.c3sl.ufpr.br>
escreveu:

> Enviar submissões para a lista de discussão R-br para
>         r-br em listas.c3sl.ufpr.br
>
> Para se cadastrar ou descadastrar via WWW, visite o endereço
>         https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> ou, via email, envie uma mensagem com a palavra 'help' no assunto ou
> corpo da mensagem para
>         r-br-request em listas.c3sl.ufpr.br
>
> Você poderá entrar em contato com a pessoa que gerencia a lista pelo
> endereço
>         r-br-owner em listas.c3sl.ufpr.br
>
> Quando responder, por favor edite sua linha Assunto assim ela será
> mais específica que "Re: Contents of R-br digest..."
>
>
> Tópicos de Hoje:
>
>    1. Re: Modificação da orientação de estrutura de dados
>       (Leonardo Mancini)
>    2. Re: Modificação da orientação de estrutura de dados
>       (Daniel Guimarães Tiezzi)
>    3. Re: Modificação da orientação de estrutura de dados (Jônatan)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 29 Nov 2018 12:04:32 -0200
> From: Leonardo Mancini <lmancini em gmail.com>
> To: r-br em listas.c3sl.ufpr.br
> Subject: Re: [R-br] Modificação da orientação de estrutura de
>         dados
> Message-ID:
>         <CABAOmR02Yd4XgrYj92r47vpURiiivMDcYNo=sF=
> G9daTjs9KhQ em mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Paulo,
>
> Certamente há uma maneira mais elegante de fazer isso, mas talvez esse
> código te dê alguma pista:
>
> df %>%
>   spread(CAUSA, CAUSA) %>%
>   unite(CAUSAS, A, B, C, D, E, F, G, H, I, sep = ",", remove = T) %>%
>   mutate(CAUSAS = str_remove_all(CAUSAS, ",NA")) %>%
>   mutate(CAUSAS = str_remove_all(CAUSAS, "NA,"))
>
> Abs
>
> Em qui, 29 de nov de 2018 às 10:30, Paulo Eduardo de Mesquita por (R-br) <
> r-br em listas.c3sl.ufpr.br> escreveu:
>
> > Prezado(a)s Colegas
> >
> > Peço ajuda para um problema simples para o qual não encontro solução.
> >
> > O código abaixo gera uma estrutura de dados de trabalho:
> >
> > [image: demo1.png]
> >
> > Eu quero muda-la para esse formato:
> >
> > [image: demo2.png]
> >
> >
> > ID <- c(1, 1, 1, 1, 2, 2, 3, 3, 3)
> > NOME <- c("xpto", "xpto", "xpto", "xpto", "tpzo", "tpzo", "capr", "capr",
> > "capr")
> > IDADE <- c(1, 1, 1, 1, 57, 57, 81, 81, 81)
> > SEXO <- c("M", "M", "M", "M", "M", "M", "F", "F", "F")
> > CAUSA <- c("A", "B", "C", "D", "E", "F","G","H","I")
> >
> > df <- data.frame(ID, NOME, IDADE, SEXO, CAUSA)
> >
> > df
> >
> > Procurei soluções com as com as funções do pacote reshape2 (unmelt e
> > dcast) e group_by do dplyr, mas não tive sucesso.
> >
> > Fico grato por alguma dica.
> >
> > Muito obrigado pela atenção.
> > --
> > Paulo Eduardo de Mesquita
> > Disciplina de Infectologia - Faculdade de Medicina  Universidade do Oeste
> > Paulista Presidente Prudente - São Paulo - Brasil
> > telefone: 5518 97718261
> > _______________________________________________
> > R-br mailing list
> > R-br em listas.c3sl.ufpr.br
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> > código mínimo reproduzível.
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/7bd3a241/attachment-0001.html
> >
> -------------- Próxima Parte ----------
> Um anexo não-texto foi limpo...
> Nome: demo1.png
> Tipo: image/png
> Tamanho: 3960 bytes
> Descrição: não disponível
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/7bd3a241/attachment-0002.png
> >
> -------------- Próxima Parte ----------
> Um anexo não-texto foi limpo...
> Nome: demo2.png
> Tipo: image/png
> Tamanho: 2925 bytes
> Descrição: não disponível
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/7bd3a241/attachment-0003.png
> >
>
> ------------------------------
>
> Message: 2
> Date: Thu, 29 Nov 2018 12:26:45 -0200
> From: Daniel Guimarães Tiezzi <dtiezzi em usp.br>
> To: "a lista Brasileira oficial de discussão do programa R."
>         <r-br em listas.c3sl.ufpr.br>
> Cc: Paulo Eduardo de Mesquita <paulomesquita7 em gmail.com>
> Subject: Re: [R-br] Modificação da orientação de estrutura de
>         dados
> Message-ID: <060B7FE8-BC19-4D9B-8083-07CE255C6617 em usp.br>
> Content-Type: text/plain; charset="utf-8"
>
> Pode ser que não seja o mais rápido, mas resolve
>
> ID <- c(1, 1, 1, 1, 2, 2, 3, 3, 3)
> NOME <- c("xpto", "xpto", "xpto", "xpto", "tpzo", "tpzo", "capr", "capr",
> "capr")
> IDADE <- c(1, 1, 1, 1, 57, 57, 81, 81, 81)
> SEXO <- c("M", "M", "M", "M", "M", "M", "F", "F", "F")
> CAUSA <- c("A", "B", "C", "D", "E", "F","G","H","I")
>
> df <- data.frame(ID, NOME, IDADE, SEXO, CAUSA)
>
> df
>
> names <- unique(df$NOME)
> id_l = list()
> nome_l = list()
> idade_l = list()
> sexo_l = list()
> causa_l = list()
>
> for (i in 1:length(names)) {
>   name = names[i]
>   block = as.data.frame(df[df$NOME == name, ])
>   id = block$ID[1]
>   nome = block$NOME[1]
>   idade = block$IDADE[1]
>   sexo = block$SEXO[1]
>   causa = vector()
>   for (j in 1:nrow(block)) {
>     causa = paste0(causa,block$CAUSA[j], sep = ',')
>   }
>   print(causa)
>   id_l[[paste0(i)]] <- id
>   nome_l[[paste0(i)]] <- nome
>   idade_l[[paste0(i)]] <- idade
>   sexo_l[[paste0(i)]] <- sexo
>   causa_l[[paste0(i)]] <- causa
> }
>
> unlist(causa_l)
>
> dfNew <- data.frame(ID = unlist(id_l), NOME= unlist(nome_l), IDADE=
> unlist(idade_l), SEXO= unlist(sexo_l), CAUSA= unlist(causa_l))
> print(dfNew)
>
> Abraço
>
> daniel
>
> Daniel Tiezzi, MD, PhD
> Professor Associado
> Departamento de Ginecologia e Obstetrícia
> Setor de Mastologia e Oncologia Ginecológica
> Faculdade de Medicina de Ribeirão Preto - USP
> Tel.: 16 3602-2488
> e-mail: dtiezzi em fmrp.usp.br
>
> > On Nov 29, 2018, at 10:30 AM, Paulo Eduardo de Mesquita por (R-br) <
> r-br em listas.c3sl.ufpr.br> wrote:
> >
> > ID <- c(1, 1, 1, 1, 2, 2, 3, 3, 3)
> > NOME <- c("xpto", "xpto", "xpto", "xpto", "tpzo", "tpzo", "capr",
> "capr", "capr")
> > IDADE <- c(1, 1, 1, 1, 57, 57, 81, 81, 81)
> > SEXO <- c("M", "M", "M", "M", "M", "M", "F", "F", "F")
> > CAUSA <- c("A", "B", "C", "D", "E", "F","G","H","I")
> >
> > df <- data.frame(ID, NOME, IDADE, SEXO, CAUSA)
> >
> > df
>
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/778f1d5b/attachment-0001.html
> >
>
> ------------------------------
>
> Message: 3
> Date: Thu, 29 Nov 2018 14:08:54 -0200
> From: Jônatan <jdtatsch em gmail.com>
> To: a lista Brasileira oficial de discussão do programa R.
>         <r-br em listas.c3sl.ufpr.br>
> Subject: Re: [R-br] Modificação da orientação de estrutura de
>         dados
> Message-ID:
>         <CAEiHnvPm3sJcOZSQE1HnNnSrHY=
> FrYZrwaNCXmw9OLbLmNH6Fw em mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Alternativa também com dplyr.
>
> library(dplyr)
> df %>%
> group_by_at(vars(-CAUSA)) %>%
> summarise(CAUSA = paste(CAUSA, collapse = ", "))
>
>
> On Thu, Nov 29, 2018 at 12:04 PM Leonardo Mancini por (R-br) <
> r-br em listas.c3sl.ufpr.br> wrote:
>
> > Paulo,
> >
> > Certamente há uma maneira mais elegante de fazer isso, mas talvez esse
> > código te dê alguma pista:
> >
> > df %>%
> >   spread(CAUSA, CAUSA) %>%
> >   unite(CAUSAS, A, B, C, D, E, F, G, H, I, sep = ",", remove = T) %>%
> >   mutate(CAUSAS = str_remove_all(CAUSAS, ",NA")) %>%
> >   mutate(CAUSAS = str_remove_all(CAUSAS, "NA,"))
> >
> > Abs
> >
> > Em qui, 29 de nov de 2018 às 10:30, Paulo Eduardo de Mesquita por (R-br)
> <
> > r-br em listas.c3sl.ufpr.br> escreveu:
> >
> >> Prezado(a)s Colegas
> >>
> >> Peço ajuda para um problema simples para o qual não encontro solução.
> >>
> >> O código abaixo gera uma estrutura de dados de trabalho:
> >>
> >> [image: demo1.png]
> >>
> >> Eu quero muda-la para esse formato:
> >>
> >> [image: demo2.png]
> >>
> >>
> >> ID <- c(1, 1, 1, 1, 2, 2, 3, 3, 3)
> >> NOME <- c("xpto", "xpto", "xpto", "xpto", "tpzo", "tpzo", "capr",
> "capr",
> >> "capr")
> >> IDADE <- c(1, 1, 1, 1, 57, 57, 81, 81, 81)
> >> SEXO <- c("M", "M", "M", "M", "M", "M", "F", "F", "F")
> >> CAUSA <- c("A", "B", "C", "D", "E", "F","G","H","I")
> >>
> >> df <- data.frame(ID, NOME, IDADE, SEXO, CAUSA)
> >>
> >> df
> >>
> >> Procurei soluções com as com as funções do pacote reshape2 (unmelt e
> >> dcast) e group_by do dplyr, mas não tive sucesso.
> >>
> >> Fico grato por alguma dica.
> >>
> >> Muito obrigado pela atenção.
> >> --
> >> Paulo Eduardo de Mesquita
> >> Disciplina de Infectologia - Faculdade de Medicina  Universidade do
> Oeste
> >> Paulista Presidente Prudente - São Paulo - Brasil
> >> telefone: 5518 97718261
> >> _______________________________________________
> >> R-br mailing list
> >> R-br em listas.c3sl.ufpr.br
> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> >> código mínimo reproduzível.
> >
> > _______________________________________________
> > R-br mailing list
> > R-br em listas.c3sl.ufpr.br
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> > código mínimo reproduzível.
>
>
>
> --
> ###############################################################
> ##  Jônatan Dupont Tatsch
> ##  Professor do Departamento de Física
> ##  Centro de Ciências Exatas e Naturais (CCNE)
> ##  Universidade Federal de Santa Maria - UFSM
> ##  Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil -
> 97105-900
> ##  Telefone: +55(55)33012083
> ##  www.ufsm.br/meteorologia
> ###############################################################
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/c0417ec9/attachment-0001.html
> >
> -------------- Próxima Parte ----------
> Um anexo não-texto foi limpo...
> Nome: demo1.png
> Tipo: image/png
> Tamanho: 3960 bytes
> Descrição: não disponível
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/c0417ec9/attachment-0002.png
> >
> -------------- Próxima Parte ----------
> Um anexo não-texto foi limpo...
> Nome: demo2.png
> Tipo: image/png
> Tamanho: 2925 bytes
> Descrição: não disponível
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181129/c0417ec9/attachment-0003.png
> >
>
> ------------------------------
>
> Subject: Legenda do Digest
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>
>
> ------------------------------
>
> Fim da Digest R-br, volume 95, assunto 23
> *****************************************
>


-- 
Paulo Eduardo de Mesquita
Disciplina de Infectologia - Faculdade de Medicina  Universidade do Oeste
Paulista Presidente Prudente - São Paulo - Brasil
telefone: 5518 97718261
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181130/7b2e8cac/attachment.html>


Mais detalhes sobre a lista de discussão R-br