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

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@listas.c3sl.ufpr.br> escreveu:
Enviar submissões para a lista de discussão R-br para r-br@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@listas.c3sl.ufpr.br
Você poderá entrar em contato com a pessoa que gerencia a lista pelo endereço r-br-owner@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@gmail.com> To: r-br@listas.c3sl.ufpr.br Subject: Re: [R-br] Modificação da orientação de estrutura de dados Message-ID: <CABAOmR02Yd4XgrYj92r47vpURiiivMDcYNo=sF= G9daTjs9KhQ@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@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@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/attac...
-------------- 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/attac...
-------------- 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/attac...
------------------------------
Message: 2 Date: Thu, 29 Nov 2018 12:26:45 -0200 From: Daniel Guimarães Tiezzi <dtiezzi@usp.br> To: "a lista Brasileira oficial de discussão do programa R." <r-br@listas.c3sl.ufpr.br> Cc: Paulo Eduardo de Mesquita <paulomesquita7@gmail.com> Subject: Re: [R-br] Modificação da orientação de estrutura de dados Message-ID: <060B7FE8-BC19-4D9B-8083-07CE255C6617@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@fmrp.usp.br
On Nov 29, 2018, at 10:30 AM, Paulo Eduardo de Mesquita por (R-br) < r-br@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/attac...
------------------------------
Message: 3 Date: Thu, 29 Nov 2018 14:08:54 -0200 From: Jônatan <jdtatsch@gmail.com> To: a lista Brasileira oficial de discussão do programa R. <r-br@listas.c3sl.ufpr.br> Subject: Re: [R-br] Modificação da orientação de estrutura de dados Message-ID: <CAEiHnvPm3sJcOZSQE1HnNnSrHY= FrYZrwaNCXmw9OLbLmNH6Fw@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@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@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@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@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/attac...
-------------- 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/attac...
-------------- 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/attac...
------------------------------
Subject: Legenda do Digest
_______________________________________________ R-br mailing list R-br@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
participantes (1)
-
Paulo Eduardo de Mesquita